解決MySQL報(bào)錯(cuò)incorrect?datetime?value?'0000-00-00?00:00:00'?for?column
使用navicat導(dǎo)入數(shù)據(jù)時(shí)報(bào)錯(cuò):
MySQL 報(bào)錯(cuò) incorrect datetime value ‘0000-00-00 00:00:00’ for column
這是因?yàn)楫?dāng)前的MySQL不支持datetime為0的情況。
MySQL報(bào)incorrect datetime value ‘0000-00-00 00:00:00’ for column錯(cuò)誤原因,是由于在MySQL5.7版本以上,默認(rèn)設(shè)置SQL_Mode模式,在模式里有NO_ZERO_DATE,NO_ZERO_IN_DATE,存在表示系統(tǒng)里DATE類(lèi)型字段不能有0值,所以在執(zhí)行操作時(shí)會(huì)報(bào)此錯(cuò)誤。
解決方案
1、如果具備系統(tǒng)權(quán)限那么直接修改my.ini 配置文件,找到sql_mode行,修改為如下重啟MySQL即可;如果沒(méi)有sql_mode行,在my.ini的[mysqld]下添加如下重啟MySQL即可:
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
2、在沒(méi)有系統(tǒng)權(quán)限,我們有本地庫(kù)權(quán)限情況下如何處理,我們可以使用
SELECT @@sql_mode;
就可以查到當(dāng)前系統(tǒng)的SQL_mode配置,發(fā)現(xiàn)配置里有NO_ZERO_DATE,NO_ZERO_IN_DATE,這時(shí)我們使用以下命令,臨時(shí)設(shè)置SQLmode模式,它只對(duì)本次會(huì)話(huà)有效,如果系統(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字段臨時(shí)修改為VarChar字段
ALTER TABLE mytemp CHANGE c10 c10 VARCHAR(100) NULL
這時(shí)進(jìn)行數(shù)據(jù)更新,將‘0000-00-00’ 替換為正常的日期字符串,在使用ALTER 命令修改表字段,這時(shí)表中的字段會(huì)自動(dòng)轉(zhuǎn)為日期類(lèi)型,字段中不能有非法字符,也可以在VarChar類(lèi)型時(shí)將字段設(shè)為NULL再將字段改回日期類(lèi)型。經(jīng)過(guò)驗(yàn)證此方法不會(huì)丟失字段的值。這個(gè)方法對(duì)于系統(tǒng)影響最小,需要的系統(tǒng)權(quán)限也最小。
總結(jié)
到此這篇關(guān)于解決MySQL報(bào)錯(cuò)incorrect datetime value '0000-00-00 00:00:00' for column的文章就介紹到這了,更多相關(guān)MySQL報(bào)錯(cuò)incorrect datetime value內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mysql通過(guò)ibd文件恢復(fù)數(shù)據(jù)的詳細(xì)步驟
mysql在使用的過(guò)程中,難免遇到數(shù)據(jù)庫(kù)表誤操作,下面這篇文章主要給大家介紹了關(guān)于Mysql通過(guò)ibd文件恢復(fù)數(shù)據(jù)的詳細(xì)步驟,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06MySQL忘記密碼恢復(fù)密碼的實(shí)現(xiàn)方法
流傳較廣的方法,mysql中文參考手冊(cè)上的,各位vps主機(jī)租用客戶(hù)和服務(wù)器托管用戶(hù)忘記mysql5.1管理員密碼時(shí),可以使用這種方法破解下2008-07-07mysql ON DUPLICATE KEY UPDATE語(yǔ)句示例
本文介紹一下關(guān)于mysql中INSERT INTO… ON DUPLICATE KEY UPDATE用法2013-11-11MySQL實(shí)現(xiàn)樂(lè)觀鎖的方式詳解
在 MySQL 中,可以通過(guò)使用樂(lè)觀鎖來(lái)實(shí)現(xiàn)并發(fā)控制,以避免數(shù)據(jù)沖突和并發(fā)更新問(wèn)題,樂(lè)觀鎖是一種樂(lè)觀的思想,它假設(shè)并發(fā)操作不會(huì)導(dǎo)致沖突,只有在提交更新時(shí)才會(huì)檢查是否發(fā)生沖突,本文給大家介紹了Mysql如何實(shí)現(xiàn)樂(lè)觀鎖,需要的朋友可以參考下2023-09-09mysql外鍵(Foreign Key)介紹和創(chuàng)建外鍵的方法
這篇文章主要介紹了mysql外鍵(Foreign Key)命令和添加外鍵方法,需要的朋友可以參考下2014-02-02mysql left join的基本用法以及on與where的區(qū)別
我們?cè)趯?xiě)sql語(yǔ)句的時(shí)候,總是無(wú)法避免使用到連接關(guān)鍵詞,比如內(nèi)連接、外連接,下面就是詳細(xì)的介紹,需要的朋友可以參考下2023-05-05