每次我尝试在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选项。我哪里出错了?
答案 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)