2013-04-24 3 views
0

У меня есть команда MySQL:MySQL 1064 ошибка создания таблицы

use hsm_thilisar_cz; CREATE TABLE GODS (
     id INT NOT NULL AUTO _INCREMENT , 
     name TEXT , 
     range BOOL , 
     free BOOL , 
     lore LONGTEXT , 
     PRIMARY KEY (id) 
); 

, но если я исполню его, я хотел бы получить сообщение об ошибке: (в переводе с чешского языка, так как сервера Czech MySQL)

#1064-Your syntax is strange near `range BOOL ,free BOOL ,lore LONGTEXT , 
PRIMARY KEY (id));` on line 4 

Есть ли какая-то идея, что у меня не так? Спасибо за ответ. ^решаемые^

Но другая проблема ...

CREATE TABLE GUIDE ( 
    id INT NOT NULL AUTO_INCREMENT, 
    godId INT NOT NULL, 
    userId INT NOT NULL, 
    item1 INT, 
    item2 INT, 
    item3 INT, 
    item4 INT, 
    item5 INT, 
    item6 INT, 
    itemA1 INT, 
    itemA2 INT, 
    itemC1 INT, 
    itemC2 INT, 
    notes LONGTEXT, 
    mode TEXT, 
    guideTimeDate TIMESTAMP, 
    PRIMARY KEY(id); 

ошибка в строке 18

#1064-Your syntax is strange near '' on line 18. 

Как я могу решить эту проблему, когда MySQL не говорит мне, где мой синтаксис неправильный ... Спасибо за ваше время, что вы потратили на решение этой проблемы.

+1

Дубликат (http://stackoverflow.com/q/10706920/ 1409082). – Jocelyn

+0

Я не думаю, что это дубликат, но хорошо, я постараюсь найти сообщение об ошибке, как описано на данной странице ... thx –

ответ

2

RANGE является зарезервированным ключевым словом и является именем вашей колонки. Чтобы избежать синтаксической ошибки, имя столбца должно быть экранировано с использованием обратных ссылок. Ex,

use hsm_thilisar_cz; 
CREATE TABLE GODS 
(
     id INT NOT NULL AUTO _INCREMENT , 
     name TEXT , 
     `range` BOOL ,   -- wrap with backticks 
     free BOOL , 
     lore LONGTEXT , 
     PRIMARY KEY (id) 
); 

Я предпочел бы изменить имя столбца, которое не на списка зарезервированных ключевых слов предотвратить ту же ошибку с возвращением снова на будущее.

use hsm_thilisar_cz; 
CREATE TABLE GODS 
(
     id INT NOT NULL AUTO _INCREMENT , 
     name TEXT , 
     gods_range BOOL ,   
     free BOOL , 
     lore LONGTEXT , 
     PRIMARY KEY (id) 
); 
+0

это работает ... спасибо –

+0

вы всегда ': D' –

0

"range" - ключевое слово MySql. Вы не можете его использовать. Я попробовал это, и она работала: [? Как я могу писать SQL для таблицы, которая разделяет то же имя защищенного ключевого слова в MySql]

CREATE TABLE GODS (
     id INT NOT NULL AUTO_INCREMENT , 
     name TEXT , 
     myrange BOOL , 
     free BOOL , 
     lore LONGTEXT , 
     PRIMARY KEY (id) 
); 
Смежные вопросы