我正在尝试使用查询在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
答案 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)
);