2011-04-18 15 views
0

我不明白錯在這個SQL語句什麼如何設置數據類型年份在MySQL

INSERT INTO tbl_car_model_year_rate 
SET car_model_id =4, 
FROM =2008, 
TO =2011, 
with_driver =1, 
per_day =1000, 
ten_days =10000, 
twenty_days =20000, 
thirty_days =30000, 
image = '1303166512test.jpg', 
created_at = NOW() , 
created_by =1 

數據類型

car_model_id int(11) 
image text   
from year(4) 
to year(4) 
with_driver tinyint(1)   
per_day int(11) 
ten_days int(11) 
twenty_days int(11) 
thirty_days int(11) 
created_at datetime 
created_by int(11) 

錯誤訊息話題

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from =2008, to =2011, with_driver =1, per_day =1000, ten_days =10000,  twenty' at line 1 

回答

4

如果你改變你的代碼:

INSERT INTO tbl_car_model_year_rate SET car_model_id =4, 
`FROM` =2008, 
`TO` =2011, 
with_driver =1, 
per_day =1000, 
ten_days =10000, 
twenty_days =20000, 
thirty_days =30000, 
image = '1303166512test.jpg', 
created_at = NOW() , 
created_by =1 

它將工作。 如果您在反引號「`」中添加您的字段和/或表名稱,那麼您可以使用它們的任何名稱。

失敗原因
FROM是保留字(如select *FROMtablename
您可以利用FROM作爲列名select * FROM FROM WHERE FROM = AND

我的建議混淆的MySQL
請勿爲字段名使用保留字。
將列名更改從FROMYearFromStartYear
TOYearToEndYear

使用保留字作爲列名僅僅是簡單的混淆,並且在每件事物周圍添加反斜槓只會讓東西難以閱讀和難看,同時仍然令人困惑。

4

您使用的是列名的保留字。

某些詞,例如SELECT,DELETE 或BIGINT被保留,需要 用作 標識符,諸如表和列名 特殊處理。對於內置函數的名稱,這也可能是真實的。

有關保留字,包括版本之間的差異的詳細列表,請參閱Reserved Words in MySQL 5.5:如果你引用它們作爲Section 8.2, 「Schema Object Names」描述

保留字允許作爲 標識符。

http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

相關問題