Невозможно создать таблицу в mysql -Error 1064 - PullRequest
0 голосов
/ 01 декабря 2018

Я пытаюсь создать таблицу в 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
VARCHAR в строке 3

1 Ответ

0 голосов
/ 01 декабря 2018

В MySQL 8.0.2 добавлена ​​поддержка функции окна rank, что делает его резервным словом .

Вы можете избежать его, используя обратные символы (`):

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)
);
...