为什么mysql 8出现sql错误0?

s2j5cfk0  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(246)

这个问题在这里已经有答案了

在mysql中何时使用单引号、双引号和反引号(13个答案)
11个月前关门了。
我似乎不明白为什么会出现这个错误,因为我使用的是percona server for mysql 8,sql模式设置为 sql_mode = "NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION" 这是我得到的错误什么sql错误0?

MySQL: Invalid Query: 
            SELECT
              Rank,
              SpecialRank,
              TotalRank,
              DonationTime,
              RankExpirationTime + INTERVAL 766 HOUR
            FROM users_donor_ranks
            WHERE UserID = '1' SQL error: 0 ()

我正在使用的sql表

CREATE TABLE `users_donor_ranks` (
  `UserID` int(10) NOT NULL DEFAULT '0',
  `Rank` tinyint(2) NOT NULL DEFAULT '0',
  `DonationTime` datetime DEFAULT NULL,
  `Hidden` tinyint(2) NOT NULL DEFAULT '0',
  `TotalRank` int(10) NOT NULL DEFAULT '0',
  `SpecialRank` tinyint(2) DEFAULT '0',
  `InvitesRecievedRank` tinyint(4) DEFAULT '0',
  `RankExpirationTime` datetime DEFAULT NULL,
  PRIMARY KEY (`UserID`),
  KEY `DonationTime` (`DonationTime`),
  KEY `SpecialRank` (`SpecialRank`),
  KEY `Rank` (`Rank`),
  KEY `TotalRank` (`TotalRank`)
) ENGINE=InnoDB CHARSET=utf8mb4;

我提出的问题

G::$DB->query("
        SELECT
          Rank,
          SpecialRank,
          TotalRank,
          DonationTime,
          RankExpirationTime + INTERVAL 766 HOUR
        FROM users_donor_ranks
        WHERE UserID = '$UserID'");
5q4ezhmt

5q4ezhmt1#

RANK 是mysql 8.0.2版的保留字。
您需要使用反勾号引用此标识符:

SELECT
    `Rank`,
    SpecialRank,
    TotalRank,
    DonationTime,
    RankExpirationTime + INTERVAL 766 HOUR
FROM users_donor_ranks
WHERE UserID = ?

相关问题