我有一个 MySql 表,其字段定义为:
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
在我的本地计算机上,我可以运行:
INSERT INTO mytbl (id, user_id, created) VALUES(88882341234, 765, null);
SELECT id, user_id, created FROM mytbl WHERE id = '88882341234';
然后“创建”将显示类似“2014-06-13 21:16:42”的内容。
但在我的临时服务器上,如果我运行相同的查询,则会收到此错误:
Column 'created' cannot be null.
表的模式是相同的(跨本地和临时),我通过 mysqldump 确保了这一点(在运行此测试之前克隆表)。
我在两台机器上运行 MySql 5.6.17。我还确保两者具有相同的 sql_mode。
可能是什么问题呢?
附:对于那些不知道为什么我要将不可为空字段的值设置为 null 的人,MySql 文档 http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html say:
此外,您可以将任何 TIMESTAMP 列初始化或更新为
当前日期和时间,通过为其分配 NULL 值,除非已
使用 NULL 属性定义以允许 NULL 值。