将我的 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'
确保您正在运行比版本 5.7.7 更新的当前 MySQL 5.7 版本,或禁用严格模式。5.7.4 到 5.7.7 版本将NO_ZERO_DATE
SQL 模式合并到严格模式中。
从 MySQL 5.7.4 开始,不推荐使用
ERROR_FOR_DIVISION_BY_ZERO
、NO_ZERO_DATE
和NO_ZERO_IN_DATE
SQL 模式。从 MySQL 5.7.4 到 5.7.7,这些模式在显式命名时什么都不做。相反,它们的影响包含在严格 SQL 模式(STRICT_ALL_TABLES
或STRICT_TRANS_TABLES
)的影响中。换句话说,严格模式在那些版本中的含义与 5.7.4 之前的严格模式的含义相同,加上ERROR_FOR_DIVISION_BY_ZERO
、NO_ZERO_DATE
和NO_ZERO_IN_DATE
。
ERROR_FOR_DIVISION_BY_ZERO
MySQL 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_DATE
和TIMESTAMP
列不能用DEFAULT '0000-00-00 00:00:00'
.CREATE TABLE
如果从 5.6 到 5.7.4 的语句包含此类TIMESTAMP
列,这将导致它们的复制失败。