【问题标题】:MySQL 5.7: Problems with DATETIME = '0000-00-00 00:00:00'MySQL 5.7:DATETIME = '0000-00-00 00:00:00' 的问题
【发布时间】: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_TABLESSTRICT_TRANS_TABLES 模式?

标签: mysql mysql-5.7


【解决方案1】:

从 Ubuntu 14.04 repo mysql 5.5.6 更新时我遇到了同样的问题?到 mysql 5.7.9

我正在使用 perl 脚本执行多个加载数据 infile,其中日期有时为 0000-00-00 00:00:00。我还在 DBO 跟踪中得到 err 1292,这是通过从选项文件中的 sql 模式中删除 STRICT_TRANS_TABLES 来解决的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    • 2017-10-03
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    相关资源
    最近更新 更多