【问题标题】:why am i getting sql error 0 with mysql 8? [duplicate]为什么我在使用 mysql 8 时出现 sql 错误 0? [复制]
【发布时间】:2020-05-21 23:16:53
【问题描述】:

我似乎无法弄清楚为什么我会收到此错误我正在使用 mysql 8 的 percona 服务器,并将 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'");

【问题讨论】:

    标签: php mysql sql mariadb percona


    【解决方案1】:

    RANK 在 MySQL 8.0.2 开始版本中是 a reserved word

    您需要使用反引号引用此标识符:

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

    【讨论】:

    • 谢谢它的工作;)
    猜你喜欢
    • 2021-08-20
    • 1970-01-01
    • 2017-07-14
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-27
    • 1970-01-01
    相关资源
    最近更新 更多