无法在mysql中创建表-错误1064

时间:2018-12-01 11:03:28

标签: mysql ddl create-table

我正在尝试使用查询在MySQL中创建表

CREATE TABLE ofRosterGroups (
  rosterID              BIGINT          NOT NULL,
  rank                  TINYINT         NOT NULL,
  groupName             VARCHAR(255)    NOT NULL,
  PRIMARY KEY (rosterID, rank),
  INDEX ofRosterGroup_rosterid_idx (rosterID)
);

但是每次我也进行更新时,它似乎都抛出错误。我不知道这是怎么回事。

出现错误是

  

您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册以使用正确的语法   在'rank TINYINT NOT NULL,groupName
附近   第3行的VARCHAR

1 个答案:

答案 0 :(得分:3)

MySQL 8.0.2添加了对窗口rank函数的支持,使其成为reserverd word

您可以使用反引号(`)将其转义:

CREATE TABLE ofRosterGroups (
  rosterID              BIGINT          NOT NULL,
  `rank`                TINYINT         NOT NULL, -- Here
  groupName             VARCHAR(255)    NOT NULL,
  PRIMARY KEY (rosterID, `rank`), -- And here
  INDEX ofRosterGroup_rosterid_idx (rosterID)
);

但是最好使用不是保留字的名称,例如rosterRank而不是rank

CREATE TABLE ofRosterGroups (
  rosterID              BIGINT          NOT NULL,
  rosterRank            TINYINT         NOT NULL, -- Here
  groupName             VARCHAR(255)    NOT NULL,
  PRIMARY KEY (rosterID, rosterRank), -- And here
  INDEX ofRosterGroup_rosterid_idx (rosterID)
);