【问题标题】:how to set Year Datatype in MySQL如何在 MySQL 中设置年份数据类型
【发布时间】:2011-08-08 06:20:49
【问题描述】:

我不明白这个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

【问题讨论】:

    标签: php mysql sql types phpmyadmin


    【解决方案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 *FROMtablename
    您通过使用FROM 作为列名来混淆 MySQL (select * FROM FROM WHERE FROM = AND)

    我的建议
    不要对字段名使用保留字。
    将列名从 FROM 更改为 YearFromStartYear
    TOYearToEndYear

    使用保留字作为列名只会令人困惑,并且在所有内容周围添加反引号只会使内容难以阅读和丑陋,同时仍然令人困惑。

    【讨论】:

      【解决方案2】:

      您正在为列名使用保留字。

      某些词,例如 SELECT、DELETE、 或 BIGINT 保留并要求 特殊处理用作 表和列等标识符 名字。这也可能适用于 内置函数的名称。

      保留字被允许为 标识符,如果您将它们引用为 在Section 8.2, “Schema Object Names”中描述:

      有关保留字的更详细列表,包括版本之间的差异,请参阅Reserved Words in MySQL 5.5

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

      【讨论】:

        【解决方案3】:

        TO 和 FROM 是保留字,您应该将其放在一个单独的引号中,例如 'FROM'、'TO'。

        并记住在生成表时避免对列使用保留字,请参阅下面的链接以获取 mysql 保留字的完整参考

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

        【讨论】:

          【解决方案4】:

          这是 MySQL 中正确使用年份字段的示例:

          MySQL: adding current year as a default value for a field 'year'

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-02-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-03-05
            • 2014-01-06
            • 1970-01-01
            相关资源
            最近更新 更多