2012-07-08 53 views
2

所以我一直卡在這個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服務器版本的手冊,以便在'before,after,date_added'附近使用 )正確的語法VALUES('image4-after.jpg', 'portrait','1','1','1在1號線

有誰能夠告訴我什麼我做錯了?

感謝「」

+0

請張貼架構。 – djdy 2012-07-08 19:44:25

+0

所有的文章都是文字嗎? – Raekye 2012-07-08 19:44:59

+1

^這些東西都沒有與語法錯誤有關 – Esailija 2012-07-08 19:54:46

回答

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...指示符中語法上指向非明顯的語句時,請查看保留字列表。

+0

這很好解釋了很多!感謝那瘋狂的迴應時間:) – alsweet 2012-07-08 19:48:33

1

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

嘗試使用向後的引號前進:before