我有一个MySql表,其字段定义为:
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
Run Code Online (Sandbox Code Playgroud)
在我的本地机器上,我可以运行:
INSERT INTO mytbl (id, user_id, created) VALUES(88882341234, 765, null);
SELECT id, user_id, created FROM mytbl WHERE id = '88882341234';
Run Code Online (Sandbox Code Playgroud)
然后'创建'将显示类似'2014-06-13 21:16:42'的内容.
但是在我的登台服务器上,如果我运行相同的查询,我会收到此错误:
Column 'created' cannot be null.
Run Code Online (Sandbox Code Playgroud)
这些表的模式是相同的(跨本地和分段),我通过mysqldump确保(在运行此测试之前克隆表).
我在两台机器上运行MySql 5.6.17.我也确保两者都有相同的sql_mode.
可能是什么问题呢?
PS对于那些不知道我为什么要将不可空字段的值设置为null的人,MySql Docs说:
此外,您可以通过为任何TIMESTAMP列分配NULL值来初始化或更新任何TIMESTAMP列,除非已使用NULL属性定义允许NULL值.
Rya*_*yan 36
我发现了问题所在.explicit_defaults_for_timestamp我的本地计算机上的MySql变量/参数为OFF,但远程计算机上为ON.
我访问了我的AWS RDS参数组页面,并将explicit_defaults_for_timestamp从1更改为0.然后,我转到AWS RDS实例页面,观察"参数组"何时从"正在应用"更改为"挂起重启".然后我重新启动了特定的实例.
这些链接帮助我:
| 归档时间: |
|
| 查看次数: |
5515 次 |
| 最近记录: |