我无法理解这个sql语句中的错误
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
答案 0 :(得分:4)
您正在使用保留字作为列名。
某些单词,例如SELECT,DELETE, 或BIGINT保留并要求 特殊处理用作 表和列等标识符 名。这也可能适用于 内置函数的名称。
允许使用保留字 标识符,如果您引用它们 在Section 8.2, “Schema Object Names”中描述:
有关保留字的更详细列表,包括版本之间的差异,请参阅Reserved Words in MySQL 5.5。
答案 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 *
FROM
tablename
)
使用FROM
作为列名(select * FROM FROM WHERE FROM = AND
)
我的推荐
不要在字段名中使用保留字
将列名从FROM
更改为YearFrom
或StartYear
从TO
到YearTo
或EndYear
。
使用保留字作为列名只是简单的混淆,并且在所有内容中添加反引号只会使内容难以阅读和丑陋而且仍然令人困惑。
答案 2 :(得分:1)
TO和FROM是保留字,你应该把它放在像'FROM','TO'这样的单个qoute中。
并且记住在生成表时避免对列使用保留字,请参阅以下链接以获取mysql保留字的完整参考
答案 3 :(得分:0)
以下是在MySQL中正确使用年份字段的示例:
MySQL: adding current year as a default value for a field 'year'