1292Incorrect datetime value 0000-00-00 00:00:00 for column targetTime at row 1 解決方案

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%';

然後刷新數據庫

注:方式二每次重啓數據庫後都需要重新設置,建議使用方式一

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章