不正确的日期时间值mysql57
更新我的MySQL版本从5.6到5.7后,我得到一个错误:不正确的日期时间值mysql57
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'
结构确保你使用的是最新的MySQL 5.7版本比5.7.7版本更新,或者禁用严格模式。 Versions 5.7.4 to 5.7.7 incorporated NO_ZERO_DATE
SQL mode into strict mode.
在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
)。 换句话说,严格模式在这些版本中的含义与严格模式加上ERROR_FOR_DIVISION_BY_ZERO
,NO_ZERO_DATE
和NO_ZERO_IN_DATE
之前的5.7.4含义相同。MySQL 5.7.4更改严格模式更严格,包括
ERROR_FOR_DIVISION_BY_ZERO
,NO_ZERO_DATE
和NO_ZERO_IN_DATE
引起了一些问题。例如,在MySQL 5.6中使用严格模式但未启用NO_ZERO_DATE
,可以使用DEFAULT '0000-00-00 00:00:00'
来定义TIMESTAMP
列。 在具有相同模式设置的MySQL 5.7.4中,严格模式包含NO_ZERO_DATE
和TIMESTAMP
列的效果不能用DEFAULT '0000-00-00 00:00:00'
定义。这会导致CREATE TABLE
语句从5.6到5.7.4的复制失败(如果它们包含TIMESTAMP
列)。
好的,我明白了。 :D谢谢。但我能做些什么来解决。我需要使用ZERO_DATE。这个ZERO_DATE是否可以在5.7中启用? – Rampagre3e3121312324
如果我更改为NULL,应该罚款? – Rampagre3e3121312324
如果需要,请禁用严格模式。它是否能与NULL一起工作完全取决于你的应用程序逻辑。 – miken32