timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP在一台机器上可以为null,但在另一台机器上不能为null?

瑞安

我有一个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。

可能是什么问题呢?

PS对于不知道为何将非空字段的值设置为null的人,MySql Docs会说:

此外,除非已使用NULL属性将其定义为允许NULL值,否则可以通过为它分配NULL值来将任何TIMESTAMP列初始化或更新为当前日期和时间。

瑞安

我发现了问题所在。MySql变量/参数explicit_defaults_for_timestamp在本地计算机上为OFF,但在远程计算机上为ON。

我访问了我的AWS RDS参数组页面,并将explicit_defaults_for_timestamp从1更改为0。然后我去了AWS RDS实例页面,以查看“参数组”从“正在应用”更改为“待重启”的情况。然后,我重新启动了特定实例。

这些链接帮助我:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档