我最近切换到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
。
答案 0 :(得分:2)
NULL
,因为任何空字段的值都可以用于未来,并且相当明智。您的应用程序代码需要进行测试,以确保其正确处理NULL
。
几年前,对于MySQL开发人员来说,接受0000-00-00 00:00:00
作为有效日期时间是一个糟糕的选择,它只是解决问题而不是解决问题。即使应用程序开发人员需要更新其结构和代码以使其更正确(并可能修复隐藏的错误),MySQL仍然越来越严格地对待SQL。