Mysql

日期時間格式在 mysql 5.0 和 5.1 之間發生了變化?

  • September 2, 2015

我已經將 mysql slave 從 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.

我嘗試重新插入查詢,但又失敗了,然後我將值固定為:

2010-03-14 02:35:34

並且接受了查詢。

如何設置 mysql 以批准此類日期時間值以防止將來出現問題?

我的猜測是它是在表描述中設置的,並在 mysql_upgrade 期間被重置。

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

在 my.cnf 或 my.ini 中(取決於您的作業系統)。

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

PS:令人驚訝的是,您在問題中提供的日期和時間實際上是 DST(2010 年 3 月 14 日)中不存在的時間:)

引用自:https://serverfault.com/questions/313400