2016-05-10 2 views
0

Хорошо, поэтому я пытаюсь связать плагин Spigot, который я делаю в MySQL, и я успешно справился с этим до тех пор, пока не отредактировал код, создающий таблицу. Я считаю, что трассировки стека MySQL слишком неоднозначны, чтобы быть полезными, поэтому я понятия не имею, что я здесь делаю неправильно. Код:Что случилось с этим синтаксисом MySQL?

CREATE TABLE IF NOT EXISTS WebsiteLink_keys(id INT NOT NULL KEY AUTO_INCREMENT, key VARCHAR(36), trimmedUUID VARCHAR(36), playerUUID VARCHAR(36), date TIMESTAMP, status TEXT);

+2

'' key' и date' зарезервированных слов. Я бы не использовал их в качестве имен столбцов, но если вы это сделаете, вам нужно сбежать от них с помощью backticks (по крайней мере, с 'key') ... – sgeddes

+1

@ Дата публикации не является зарезервированным словом – Strawberry

+0

@Strawberry - реализовано, что после сообщение, но они оба являются ключевыми словами, и я бы не рекомендовал использовать их как имена столбцов. – sgeddes

ответ

2

key зарезервированное слово в MySQL. Если Вы абсолютно должны использовать его в качестве имени столбца, вы можете избежать его, используя кавычку:

CREATE TABLE IF NOT EXISTS WebsiteLink_keys (
    id INT NOT NULL KEY AUTO_INCREMENT, 
    `key` VARCHAR(36), -- Here! 
    trimmedUUID VARCHAR(36), 
    playerUUID VARCHAR(36), 
    date TIMESTAMP, 
    status TEXT 
) 

Или, еще лучше, использовать имя, которое не является зарезервированным словом, например link_key:

CREATE TABLE IF NOT EXISTS WebsiteLink_keys (
    id INT NOT NULL KEY AUTO_INCREMENT, 
    link_key VARCHAR(36), -- Here! 
    trimmedUUID VARCHAR(36), 
    playerUUID VARCHAR(36), 
    date TIMESTAMP, 
    status TEXT 
) 
1
CREATE TABLE IF NOT EXISTS WebsiteLink_keys(
    id INT NOT NULL AUTO_INCREMENT, 
    `key` VARCHAR(36), 
    trimmedUUID VARCHAR(36), 
    playerUUID VARCHAR(36), 
    `date` TIMESTAMP, 
    status TEXT, 
    PRIMARY KEY (id) 
); 

PRIMARY KEY (ID) в конце