SQL语法错误1064中的错误

时间:2010-04-16 02:33:16

标签: mysql

每次我尝试在MySQL命令行中创建下表:

CREATE TABLE book(
   `book_id` int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   `isbn` char(20),
   `title` char(20),
   `author_f_name` char(20),
   `author_l_name` char(20),
   `condition` ENUM("as new","very good","good","fair","poor"),
   `price` decimal(8,2),
   `genre` char(20)
);

我不断收到此错误消息:

  

错误1064(42000):您的SQL语法有错误;查看与您的MySQL版本对应的手册,以便在'条件ENUM(“为新”,“非常好”,“好”,“公平”,“差”)附近使用正确的语法,价格小数(8,2) ,g'在第6行

我尝试使用单引号和双引号作为ENUM选项。我哪里出错了?

2 个答案:

答案 0 :(得分:2)

问题是您的列名是condition,这是Reserved Word in MySQL

您需要更改列的名称或正确引用它。

有关此问题的讨论,请参阅this thread,该问题解释了如何引用列名称。引用部分帖子:

  

是的,引用您的标识符。

     

正常的quotechar是反引号(`):

     

创建表规则(condition varchar(255))

     

这是特定于mysql的。 ANSI SQL还定义了此功能,但使用双引号(“)作为分隔符:

     

创建表规则(“condition”varchar(255))

     

因为双引号通常是mysql中的字符串分隔符,所以你必须告诉mysql专门使用ANSI_QUOTES SQL模式,或者只使用ANSI模式。

     

set sql_mode:='ANSI'

     

您还可以在服务器启动时指定tha ansi模式。

答案 1 :(得分:1)