2012-02-09 3 views
0

Я "получаю ошибку где-то около PRIMARY KEY, но не может понять, что именно это может занять кто-то посмотреть?Проблемы с кодом MySQL?

CREATE TABLE `reports` (

    `key`     INT UNSIGNED AUTO_INCREMENT, 
    `role`     VARCHAR(70), 
    `region`    VARCHAR(70), 
    `inspection_type`  VARCHAR(70), 
    `inspection_number`  VARCHAR(70), 
    `customer_number`  VARCHAR(70), 

    `report_date`   DATE DEFAULT NULL, 



    `order_date`   DATE DEFAULT NULL, 


    `customer`    VARCHAR(70), 
    `customer_division`  VARCHAR(70), 
    `location`    VARCHAR(70), 
    `memo`     VARCHAR(255),  
    `billingkey`   VARCHAR(70), 

    PRIMARY KEY(key) 

) ENGINE=InnoDB DEFAULT CHARSET=UTF8; 
+2

'key' является зарезервированным словом. – Crontab

+2

И эта ошибка будет ...? Почему люди делают это? – ceejayoz

+0

Если вам не поздно переосмыслить название вашей колонки, вы должны выбрать что-то другое, кроме 'key', чтобы впоследствии сэкономить больше неприятностей. –

ответ

6

Заключите key в обратных кавычках. Это MySQL reserved keyword.

PRIMARY KEY(`key`) 
+0

+1 Еще лучше, дон 't назовите свой столбец столбца, если это возможно. Слишком большой потенциал для будущих ошибок здесь IMO. –

2

key является зарезервированным словом Технически, вы должны сделать:.

PRIMARY KEY(`key`) 

использовать его, но не зови первичный ключ key.

+0

+1 Потому что вы вводили его в качестве комментария в то же самое время, когда я отправлял ответ ... –

+0

Я так часто просматриваю список для SO отвечает, что когда я начинаю вводить 'my' в Chrome, список зарезервированных ключевых слов MySQL появляется сразу. –

+0

@Michael lol thanks =) – Crontab

0

Вам нужно бежать ключевое слово, это зарезервированное ключевое слово:

. 
. 
.  
PRIMARY KEY(`key`) 

) ENGINE=InnoDB DEFAULT CHARSET=UTF8;