不寻常的SQL错误

时间:2012-07-08 19:42:50

标签: mysql sql

所以我一直坚持这个SQL错误。

这是我正在使用的SQL行:

INSERT INTO images (image_name, orientation, restored, commercial, automotive, bespoke, before, after, date_added) 
VALUES ('image4-after.jpg', 'portrait', '1', '1', '1', '1', '24', '5', '2012-07-08')

使用这种结构:

image_id - int(11) AUTO_INCREMENT
image_name - varchar(40)
orientation - varchar(4)
restored - tinyint(1)
commercial - tinyint(1)
automotive - tinyint(1)
bespoke - tinyint(1)
before - int(11)
after - int(11)
date_added - date

收到错误消息:

  

1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以获得正确的语法   靠近'之前,之后,date_added)VALUES('image4-after.jpg',   第1行的'portrait','1','1','1'

任何人都可以告诉我我做错了什么吗?

感谢

3 个答案:

答案 0 :(得分:10)

BEFOREMySQL reserved keyword。您需要使用反引号引用它以将其用作表或列标识符。

INSERT INTO images (image_name, orientation, restored, commercial, automotive, bespoke, `before`, after, date_added) 
VALUES ('image4-after.jpg', 'portrait', '1', '1', '1', '1', '24', '5', '2012-07-08')
但是,

AFTER并未保留。

每当1064错误指向其right syntax to use near...指示符中语法不明显的内容时,请查看保留字列表。

答案 1 :(得分:3)

根据{{​​3}},

BEFORE是关键字。

尝试使用反引号(`)转义字段名称。

答案 2 :(得分:1)

我猜这是因为之前是mysql中的保留字(http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html)。

使用向后引号尝试围绕:before