日期时间格式在 mysql 5.0 和 5.1 之间改变了吗?

smi*_*ntz 5 mysql database time replication

我已将 mysql 从站从 mysql 5.0 升级到 mysql 5.1。在追赶期间,复制在日期时间值不正确的查询上失败:

110919 13:56:18 [ERROR] Slave SQL: Error 'Incorrect datetime value: '2010-03-14 02:35:34.0' for column 'creation_date' at row 1' on query.
Run Code Online (Sandbox Code Playgroud)

我试图重新插入查询,但它再次失败,然后我将值固定为:

2010-03-14 02:35:34
Run Code Online (Sandbox Code Playgroud)

并接受了查询。

如何设置 mysql 以批准此类日期时间值以防止将来出现问题?

我的猜测是它是在表描述中设置的,并在 mysql_upgrade 期间被重置。

Spa*_*arX 6

Mysql 5.1 以与 mysql 5.0 相同的方式操作微秒,但是微秒不能存储到任何时间数据类型的列中。根据 Mysql Doc: http://dev.mysql.com/doc/refman/5.1/en/datetime.html丢弃任何微秒部分。但是,由于您遇到此错误,您可以使用 mysql 中的 sql 模式设置启用允许无效日期。

sql-mode=allow_invalid_dates
Run Code Online (Sandbox Code Playgroud)

在 my.cnf 或 my.ini (取决于您的操作系统)。

http://dev.mysql.com/doc/refman/5.1/en/server-sql-mode.html#sqlmode_allow_invalid_dates

PS:令人惊讶的是,您在问题中提供的日期和时间实际上是夏令时(2010 年 3 月 14 日)中不存在的时间:)