【发布时间】:2015-07-19 15:38:29
【问题描述】:
自从我将 MySQL 数据库升级到 5.7 后,当我尝试将日期时间列设置为 0000-00-00 00:00:00 时出现问题:
UPDATE users
SET updateTime = '0000-00-00 00:00:00'
WHERE id = 123;
// #1292 - Incorrect datetime value: '0000-00-00 00:00:00' for column 'updateTime ' at row 1
如果我使用UPDATE IGNORE [...] 运行查询,它可以正常工作。
未设置 SQL 模式 NO_ZERO_DATE。有什么设置可以解决这个问题吗?
我真的不想在应用程序的每个查询中添加IGNORE。
【问题讨论】:
-
你为什么要做这样的事情?如果您需要一个空日期 - 使该字段可为空并使用
NULL作为值 -
感谢您的回复。该字段已经可以设置为 NULL。更改它会导致一些副作用(甚至更多错误),这就是我需要找到修补程序的原因。在它再次工作后,我必须找到一个“最佳实践解决方案”。
-
“它已经设置为 NULL”我的意思是,可以设置 NULL。我不确定,如果这不会引起很多新问题。我正在检查这个。
-
仅作记录,
NO_ZERO_DATEhas been deprecated -
您是否启用了
STRICT_ALL_TABLES或STRICT_TRANS_TABLES模式?