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