我最近切换到 MySQL 5.7,这会导致日期时间方面的问题。我的数据库中有日期时间,默认值为 0000-00-00 00:00:00
。 MySQL 5.7 似乎不喜欢这种类型的默认值。我明白我可以设置 sql_mode = ''
但假设我不想这样做(坚持使用默认的严格模式),最好的方法是什么?
我可以首先更新所有值:
UPDATE mycolumn SET field_datetime = NULL WHERE field_datetime='0000-00-00 00:00:00'
然后编辑日期时间字段以使用 NULL 作为默认值。
这能证明 future 吗?我认为 MySQL 5.7 有其不允许的理由
0000-00-00 00:00:00
.
最佳答案
NULL
作为任何空字段的值是面向 future 的并且相当理智。您的应用程序代码需要进行测试,以确保它能够正确处理 NULL
。
几年前,接受 0000-00-00 00:00:00
作为有效日期时间对于 MySQL 开发人员来说是一个糟糕的选择,它只是覆盖了问题而不是解决问题。即使应用程序开发人员需要更新其结构和代码以使其更加正确(并可能修复隐藏的错误),MySQL 似乎正在慢慢采取对 SQL 更加严格的方法。
关于mysql - 如何在不改变SQL模式的情况下处理0000-00-00 00 :00:00 datetimes in MySQL 5. 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52375728/