我正试图在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不为空,groupName
第3行的VARCHAR
最佳答案
MySQL 8.0.2增加了对windowrank
函数的支持,使其成为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)
);