2013-04-24 147 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) 
); 

,但如果我执行它,我会得到一个错误:(译自捷克,因为捷克的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 2013-04-24 14:12:12

+0

我不认为它是重复的,但好吧,我会尝试通过给定页面上描述的方式找到错误信息... thx – 2013-04-25 15:23:17

回答

2

RANGE是一个保留关键字,恰好是您的列的名称。为了避免语法错误,列名应该使用反引号进行转义。当然,

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

它的工作原理...谢谢 – 2013-04-24 07:36:48

+0

不客气':D' – 2013-04-24 07:37:07

0

“range”是一个MySql关键字。你不能使用它。我想这和它的工作:[?我如何写共享相同的名称作为MySQL中的protected关键字表SQL]

CREATE TABLE GODS (
     id INT NOT NULL AUTO_INCREMENT , 
     name TEXT , 
     myrange BOOL , 
     free BOOL , 
     lore LONGTEXT , 
     PRIMARY KEY (id) 
);