解決MySQL報錯incorrect?datetime?value?'0000-00-00?00:00:00'?for?column
使用navicat導(dǎo)入數(shù)據(jù)時報錯:
MySQL 報錯 incorrect datetime value ‘0000-00-00 00:00:00’ for column
這是因為當(dāng)前的MySQL不支持datetime為0的情況。
MySQL報incorrect datetime value ‘0000-00-00 00:00:00’ for column錯誤原因,是由于在MySQL5.7版本以上,默認(rèn)設(shè)置SQL_Mode模式,在模式里有NO_ZERO_DATE,NO_ZERO_IN_DATE,存在表示系統(tǒng)里DATE類型字段不能有0值,所以在執(zhí)行操作時會報此錯誤。
解決方案
1、如果具備系統(tǒng)權(quán)限那么直接修改my.ini 配置文件,找到sql_mode行,修改為如下重啟MySQL即可;如果沒有sql_mode行,在my.ini的[mysqld]下添加如下重啟MySQL即可:
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
2、在沒有系統(tǒng)權(quán)限,我們有本地庫權(quán)限情況下如何處理,我們可以使用
SELECT @@sql_mode;
就可以查到當(dāng)前系統(tǒng)的SQL_mode配置,發(fā)現(xiàn)配置里有NO_ZERO_DATE,NO_ZERO_IN_DATE,這時我們使用以下命令,臨時設(shè)置SQLmode模式,它只對本次會話有效,如果系統(tǒng)刷新后就需要我們重新設(shè)置。
SET @@sql_mode = ‘STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER';
3、還有辦法,不需要更改系統(tǒng)的SQL_mode模式,可以修改表結(jié)構(gòu),即將表中的date/datetime字段臨時修改為VarChar字段
ALTER TABLE mytemp CHANGE c10 c10 VARCHAR(100) NULL
這時進(jìn)行數(shù)據(jù)更新,將‘0000-00-00’ 替換為正常的日期字符串,在使用ALTER 命令修改表字段,這時表中的字段會自動轉(zhuǎn)為日期類型,字段中不能有非法字符,也可以在VarChar類型時將字段設(shè)為NULL再將字段改回日期類型。經(jīng)過驗證此方法不會丟失字段的值。這個方法對于系統(tǒng)影響最小,需要的系統(tǒng)權(quán)限也最小。
總結(jié)
到此這篇關(guān)于解決MySQL報錯incorrect datetime value '0000-00-00 00:00:00' for column的文章就介紹到這了,更多相關(guān)MySQL報錯incorrect datetime value內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mysql通過ibd文件恢復(fù)數(shù)據(jù)的詳細(xì)步驟
mysql在使用的過程中,難免遇到數(shù)據(jù)庫表誤操作,下面這篇文章主要給大家介紹了關(guān)于Mysql通過ibd文件恢復(fù)數(shù)據(jù)的詳細(xì)步驟,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06mysql ON DUPLICATE KEY UPDATE語句示例
本文介紹一下關(guān)于mysql中INSERT INTO… ON DUPLICATE KEY UPDATE用法2013-11-11mysql外鍵(Foreign Key)介紹和創(chuàng)建外鍵的方法
這篇文章主要介紹了mysql外鍵(Foreign Key)命令和添加外鍵方法,需要的朋友可以參考下2014-02-02mysql left join的基本用法以及on與where的區(qū)別
我們在寫sql語句的時候,總是無法避免使用到連接關(guān)鍵詞,比如內(nèi)連接、外連接,下面就是詳細(xì)的介紹,需要的朋友可以參考下2023-05-05