由于日期时间列#1067错误

时间:2017-09-13 14:27:13

标签: mysql datetime phpmyadmin

我的表中有两个Datetime列的默认值为" 0000-00-00 00:00:00" enter image description here

当我尝试更改表格中的某些结构(与这些列中的任何一列无关)时,会出现#1067错误,指出“&productddate_added'”的默认值无效。

问题#1 为什么datetime列的默认值不能是" 0000-00-00 00:00:00"?

然后我尝试更改product_date_added的默认值,这是我得到的: enter image description here

如图所示,#1067显示其他日期时间列。反之亦然,我哭笑不得。

我在其他表中尝试了这个并且它们都有这个问题:当尝试更改表结构时,#1067错误显示为datetime列,其默认值为" 0000-00-00 00:00: 00"

我还尝试将命令shell中的默认值设置为实际的日期时间值,这是我得到的: enter image description here 如您所见,1067错误仍显示在另一列中。为什么这两列相互影响?

我也试过这个: 还有这个: enter image description here

问题#2: 如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

1)数据库不接受日期时间值" 0000-00-00 00:00:00"因为默认sql_mode包括NO_ZERO_DATENO_ZERO_IN_DATE

2)要解决这个问题,需要更改mysql的模式,可以通过添加

在my.cnf文件中完成
[mysqld]
sql_mode = "modes"

其中modes是一个字符串。要获取mode字符串,需要通过运行"选择@@ sql_mode"来获取原始字符串。并截断它的两个模式字符串。