如何在MySQL中设置Year数据类型

问题描述

| 我无法理解此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,per_day  =1000,twenty\' at line 1

解决方法

如果将代码更改为:
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
)来混淆MySQL 我的建议 不要为字段名使用保留字。 将列名从“ 4”更改为“ 11”或“ 12” 从
TO
YearTo
EndYear
。 使用保留字作为列名很容易引起混淆,在所有内容周围加上反引号只会使内容难以阅读和丑陋,同时仍然令人困惑。,您正在使用保留字作为列名。 某些字词,例如SELECT,DELETE, 或BIGINT保留,并要求 特殊处理 标识符,例如表和列 名称。这对于 内置函数的名称。 保留字被允许为 标识符,如果您引用为 在第8.2节“架构”中进行了介绍 对象名称”: 有关保留字的更详细列表,包括版本之间的差异,请参见MySQL 5.5中的保留字。 http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html,TO和FROM是保留字,您应该将其放在单个\ out中,例如\'FROM \',\'TO \'。 并记住避免在生成表时对列使用保留字。请参见下面的链接,以获得mysql保留字的完整参考 http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html,这是在MySQL中正确使用Year字段的示例: MySQL:将当前年份添加为字段“ year”的默认值

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...