1292 - Incorrect datetime value: ‘0000-00-00 00:00:00’ for column ‘targetTime’ at row 1 解決方案
在使用 Navicat 對兩個數據庫數據進行數據傳輸時,發現了一個錯誤
1292 - Incorrect datetime value: ‘0000-00-00 00:00:00’ for column ‘targetTime’ at row 1 。
官方文檔上說明MySQL允許將
’0000-00-00’保存爲“僞日期”,但是MySQL有一個NO_ZERO_DATE SQL模式,這是mysql5.7版本以後出現的(具體是版本問題引起的),這個模式默認是打開的,不允許產生僞日期,所以要關掉這個選項。執行SQL語句:
select @@global.sql_mode ,可以看到NO_ZERO_DATE
然後執行show variables like ‘%sql_mode%’; 來查看是否存在查看關於sql_mode的變量,如果沒有NO_ZERO_IN_DATE和NO_ZERO_DATE就說明修改成功,最後一定要記得刷新你的表和數據庫,然後就可以解決了。
下面是解決方式:
解決方式一、
修改sql_mode配置
在MySQL配置文件mysql.ini中修改sql_mode配置,就不需要每次重啓MySQL就得重新設置sql_mode了。
關閉MySQL
修改MySQL配置
在my.ini的[mysqld]下添加:
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
先關閉數據庫
net stop mysql
修改MySQL配置
在my.ini的[mysqld]下添加:
啓動MySQL
net start mysql
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
//原來的
sql_mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
啓動MySQL
net start mysql
方式二、
直接上命令:
select @@global.sql_mode;
SET GLOBAL sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
show variables like '%sql_mode%';
然後刷新數據庫
注:方式二每次重啓數據庫後都需要重新設置,建議使用方式一