【发布时间】:2015-11-09 06:25:14
【问题描述】:
我知道某个字段没有默认值。
我一直在使用 MySQL 5.5.28,只要我在没有在该字段上指定值的情况下插入,它就可以工作。该字段为 TINYINT,默认情况下,在创建表期间不指定任何值且不声明默认值,在 INSERT 语句期间将在该字段中插入值 0。
但是,在更新到 MySQL 5.5.30 后,查询不再起作用并返回 Field doesn't have a default value。
我一直在查看更改日志,但没有发现任何线索表明 Integer 的默认值发生了变化。
MySQL 5.5.29:http://dev.mysql.com/doc/relnotes/mysql/5.5/en/news-5-5-29.html#mysqld-5-5-29-feature
MySQL 5.5.30:http://dev.mysql.com/doc/relnotes/mysql/5.5/en/news-5-5-30.html
测试查询: MyTable 具有字段 MyField1 和 MyField2
INSERT INTO MyTable(MyField2)VALUES('MICHAEL');
MySQL 5.5.28 上的结果:
MyField1 | MyField2
0 |迈克尔
警告:1 行受影响,1 条警告:1364 字段“MyField1”没有默认值
MySQL 5.5.30 上的结果:
数据没有变化并引发错误
错误代码:1364。字段“MyField1”没有默认值
INSERT INTO MyTable(MyField1, MyField2)VALUES(0, 'MICHAEL');
上述查询将起作用。
【问题讨论】: