首页 > 解决方案 > MySQL 8 的这种语法有什么问题?,它在 5.7 上运行良好

问题描述

我正在安装运行此查询的旧 vBulletin 版本 3.x,

CREATE TABLE usertextfield (
    userid INT UNSIGNED NOT NULL DEFAULT '0',
    subfolders MEDIUMTEXT,
    pmfolders MEDIUMTEXT,
    buddylist MEDIUMTEXT,
    ignorelist MEDIUMTEXT,
    signature MEDIUMTEXT,
    searchprefs MEDIUMTEXT,
    rank MEDIUMTEXT,
    PRIMARY KEY (userid)
);

这对于较旧的 MySQL 版本总是可以正常工作,但在 MySQL 8 中会出现语法错误 .. #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在附近使用的正确语法

'rank MEDIUMTEXT,
        PRIMARY (userid)
    )'

在第 9 行,而这个几乎相同的查询执行得很好并创建了表。

CREATE TABLE administrator (
    userid INT UNSIGNED NOT NULL DEFAULT '0',
    adminpermissions INT UNSIGNED NOT NULL DEFAULT '0',
    navprefs MEDIUMTEXT,
    cssprefs VARCHAR(250) NOT NULL DEFAULT '',
    notes MEDIUMTEXT,
    dismissednews TEXT,
    languageid SMALLINT UNSIGNED NOT NULL DEFAULT '0',
    PRIMARY KEY (userid)
)

您能否让我知道发生了什么变化以及我该怎么办?

标签: mysql

解决方案


RANK在 MySQL 8.0.2 中成为保留关键字。您应该重命名该列,或用 ` 标记将其包围,即

`rank` MEDIUMTEXT,

推荐阅读