我的表中有两个Datetime列的默认值为" 0000-00-00 00:00:00"
当我尝试更改表格中的某些结构(与这些列中的任何一列无关)时,会出现#1067错误,指出“&productddate_added'”的默认值无效。
问题#1 为什么datetime列的默认值不能是" 0000-00-00 00:00:00"?
然后我尝试更改product_date_added
的默认值,这是我得到的:
如图所示,#1067显示其他日期时间列。反之亦然,我哭笑不得。
我在其他表中尝试了这个并且它们都有这个问题:当尝试更改表结构时,#1067错误显示为datetime列,其默认值为" 0000-00-00 00:00: 00"
我还尝试将命令shell中的默认值设置为实际的日期时间值,这是我得到的: 如您所见,1067错误仍显示在另一列中。为什么这两列相互影响?
问题#2: 如何解决这个问题?
答案 0 :(得分:0)
1)数据库不接受日期时间值" 0000-00-00 00:00:00"因为默认sql_mode
包括NO_ZERO_DATE
和NO_ZERO_IN_DATE
2)要解决这个问题,需要更改mysql的模式,可以通过添加
在my.cnf文件中完成[mysqld]
sql_mode = "modes"
其中modes
是一个字符串。要获取mode
字符串,需要通过运行"选择@@ sql_mode"来获取原始字符串。并截断它的两个模式字符串。