创建表时出现MySQL 1064错误

时间:2013-04-24 07:28:09

标签: mysql

我有一个MySQL命令:

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没有告诉我,我的语法不正确时,我怎么能解决这个问题...感谢你的时间,你花了解决这个问题。

2 个答案:

答案 0 :(得分: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 )
);

答案 1 :(得分:0)

“range”是MySql关键字。你不能使用它。我试过这个并且有效:

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