0

将我的 mysql 版本从 5.6 更新到 5.7 后,出现错误:

Incorect datetime value: 0000-00-00 00:00:00 for column 'create_time' at row 1

这是 create_time 的结构

`create_time` DATETIME DEFAULT '0000-00-00 00:00:00'
4

1 回答 1

1

确保您正在运行比版本 5.7.7 更新的当前 MySQL 5.7 版本,或禁用严格模式。5.7.4 到 5.7.7 版本将NO_ZERO_DATESQL 模式合并到严格模式中。

从 MySQL 5.7.4 开始,不推荐使用ERROR_FOR_DIVISION_BY_ZERONO_ZERO_DATENO_ZERO_IN_DATESQL 模式。从 MySQL 5.7.4 到 5.7.7,这些模式在显式命名时什么都不做。相反,它们的影响包含在严格 SQL 模式(STRICT_ALL_TABLESSTRICT_TRANS_TABLES)的影响中。换句话说,严格模式在那些版本中的含义与 5.7.4 之前的严格模式的含义相同,加上ERROR_FOR_DIVISION_BY_ZERONO_ZERO_DATENO_ZERO_IN_DATE

ERROR_FOR_DIVISION_BY_ZEROMySQL 5.7.4 更改为通过包含、 、来使严格模式更加严格NO_ZERO_DATE,并NO_ZERO_IN_DATE导致了一些问题。例如,在具有严格模式但未NO_ZERO_DATE启用的 MySQL 5.6 中,TIMESTAMP列可以使用DEFAULT '0000-00-00 00:00:00'. 在具有相同模式设置的 MySQL 5.7.4 中,严格模式包括的效果NO_ZERO_DATETIMESTAMP列不能用DEFAULT '0000-00-00 00:00:00'. CREATE TABLE如果从 5.6 到 5.7.4 的语句包含此类TIMESTAMP列,这将导致它们的复制失败。

于 2016-01-20T21:29:48.700 回答