我最近换了MySQL5.7,它在datetimes上引起了麻烦。我的数据库中有默认值为的datetimes 0000-00-00 00:00:00
. MySQL5.7似乎不喜欢这种默认值。我知道我可以 sql_mode = ''
但是假设我不想这样做(坚持默认的严格模式),那么最好的方法是什么呢?
我可以首先更新所有值:
UPDATE mycolumn SET field_datetime = NULL WHERE field_datetime='0000-00-00 00:00:00'
然后编辑datetime字段以使用null作为默认值。
这能证明未来吗?我认为MySQL5.7有其不允许的理由 0000-00-00 00:00:00
.
1条答案
按热度按时间t0ybt7op1#
NULL
作为一个值,任何空字段都是经得起未来考验的,而且相当合理。您的应用程序代码将需要进行测试,以确保它能够处理NULL
正确地。接受
0000-00-00 00:00:00
因为多年前,mysql开发人员对validdatetime的选择很差,只涉及问题,而不是解决问题。对sql的要求越来越严格似乎是mysql正在慢慢采取的方法,即使应用程序开发人员需要更新他们的结构和代码以使其更加正确(可能还需要修复隐藏的bug)。