mysql - MySQL 8 的这种语法有什么问题? ,5.7 运行良好

标签 mysql

我正在安装运行此查询的旧 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)
)

您能否告诉我发生了什么变化以及我应该做什么?

最佳答案

RANK 变为 reserved keyword在 MySQL 8.0.2 中。您应该重命名该列,或用 ` 标记将其括起来,即

`rank` MEDIUMTEXT,

关于mysql - MySQL 8 的这种语法有什么问题? ,5.7 运行良好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54453279/

相关文章:

java - Hibernate HQL 是否支持别名子查询?

java - 如何调试 JPA CriteriaBuilder 查询

php - 我如何通过学说导入我的数据库

mysql - GROUP CONCAT 由于某种原因不工作

MySQL 按时间段对订单中的不同客户进行计数

php - 没有查询结果-mysql

mysql - 组合这两个 mySQL 查询

MySQL触发器语法错误联合两个/三个表

php - : when placed before execution, PDO准备好的语句是否进行多次sql调用到底是什么

mysql - 如何从EventMachine返回MySQL查询结果?