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

无法在mysql中创建表-错误1064,mysql,ddl,create-table,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 ofRoster

我正试图用这个查询在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不为空,组名
第3行的VARCHAR


MySQL 8.0.2增加了对window
rank
函数的支持,使其成为一个

您可以使用backticks(`)对其进行转义:

但最好使用非保留字的名称,例如
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)
);

。请在mysql服务器中尝试,同样的错误也会出现come@TimBiegeleisen这个错误会在MySQL 8中重现,不会在MySQL 5.x中重现-详细信息请参见我的答案。@Mureinik是的,我经常看到这个错误。错过了MySQL 8第1部分。
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)
);