0

我最近切换到 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'

然后编辑 datetime 字段以使用 NULL 作为默认值。

那会是未来的证明吗?我认为 MySQL 5.7 有理由禁止 0000-00-00 00:00:00.

4

1 回答 1

2

NULL因为任何空字段的值都是未来的证明,而且相当理智。您的应用程序代码需要经过测试,以确保它能够NULL正确处理。

0000-00-00 00:00:00多年前,接受有效的日期时间是 MySQL 开发人员的一个糟糕选择,并且只是覆盖了问题而不是解决问题。即使应用程序开发人员需要更新他们的结构和代码以更正确(并可能修复隐藏的错误),对 SQL 越来越严格似乎是 MySQL 正在慢慢采用的方法。

于 2018-09-17T22:59:08.550 回答