最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql ERROR 1067: Invalid default value for字段問題

 更新時(shí)間:2023年05月29日 10:46:52   作者:jerry-89  
這篇文章主要介紹了Mysql ERROR 1067: Invalid default value for字段問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Mysql ERROR 1067: Invalid default value for字段

問題

//今天把一個(gè)數(shù)據(jù)庫(kù)的sql文件導(dǎo)入到另一個(gè)數(shù)據(jù)庫(kù)出現(xiàn)以下異常:

Mysql ERROR 1067: Invalid default value for 字段

//原因是因?yàn)橹皩?dǎo)出數(shù)據(jù)里面有張表的一個(gè)日期字段默認(rèn)值為0000-00-00,導(dǎo)致現(xiàn)在的錯(cuò)誤。根本原因是  SQL_MODE  設(shè)置值的問題

查詢數(shù)據(jù)庫(kù)有什么引擎:

select table_name,`engine` from information_schema.tables where table_schema = 'database_name';

查詢表引擎(查看MYISAM)

SELECT CONCAT(table_name,'? ', engine)?? FROM information_schema.tables WHERE table_schema="bpm" AND ENGINE="MyISAM"; ?

生成修改sql(把MYISAM改成INNODB)

select CONCAT('alter table ',table_name,' engine=InnoDB;') FROM information_schema.tables WHERE table_schema="bpm" AND ENGINE="MyISAM";
alter table taai_client_dump_date engine=InnoDB;

報(bào)此錯(cuò):ERROR 1067 (42000): Invalid default value for 'cur_date'

永久解決:

??? vi /etc/my.cnf??? //添加以下配置
?sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

臨時(shí)解決:

set @@sql_mode ='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

MYSQL的sql_mode:

ONLY_FULL_GROUP_BY:

對(duì)于GROUP BY聚合操作,如果在SELECT中的列,沒有在GROUP BY中出現(xiàn),那么將認(rèn)為這個(gè)SQL是不合法的,因?yàn)榱胁辉贕ROUP BY從句中

STRICT_TRANS_TABLES:

在該模式下,如果一個(gè)值不能插入到一個(gè)事務(wù)表中,則中斷當(dāng)前的操作,對(duì)非事務(wù)表不做任何限制

NO_ZERO_IN_DATE:

在嚴(yán)格模式,不接受月或日部分為0的日期。

如果使用IGNORE選項(xiàng),我們?yōu)轭愃频娜掌诓迦?#39;0000-00-00'。

在非嚴(yán)格模式,可以接受該日期,但會(huì)生成警告。

NO_ZERO_DATE:

在嚴(yán)格模式,不要將 '0000-00-00'做為合法日期。

你仍然可以用IGNORE選項(xiàng)插入零日期。

在非嚴(yán)格模式,可以接受該日期,但會(huì)生成警告

ERROR_FOR_DIVISION_BY_ZERO:

在嚴(yán)格模式,在INSERT或UPDATE過(guò)程中,如果被零除(或MOD(X,0)),則產(chǎn)生錯(cuò)誤(否則為警告)。

如果未給出該模式,被零除時(shí)MySQL返回NULL。

如果用到INSERT IGNORE或UPDATE IGNORE中,MySQL生成被零除警告,但操作結(jié)果為NULL。

NO_AUTO_CREATE_USER

防止GRANT自動(dòng)創(chuàng)建新用戶,除非還指定了密碼。

NO_ENGINE_SUBSTITUTION:

如果需要的存儲(chǔ)引擎被禁用或未編譯,那么拋出錯(cuò)誤。不設(shè)置此值時(shí),用默認(rèn)的存儲(chǔ)引擎替代,并拋出一個(gè)異常

導(dǎo)入SQL時(shí)出現(xiàn) Invalid default value for ‘XXX‘ 報(bào)錯(cuò)

問題如上圖,在進(jìn)行建表時(shí),報(bào)錯(cuò) Invalid default value for 'XXX'

原因

MySQL的版本不同,5.6及其以下版本不支持

因?yàn)榻o了時(shí)間字段的列默認(rèn)值一個(gè) CURRENT_TIMESTAMP 默認(rèn)值,而這個(gè)默認(rèn)值在低版本的 MySQL 中是不支持的,因此就出現(xiàn)了圖中的這個(gè)報(bào)錯(cuò)

`reg_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '注冊(cè)時(shí)間',

解決方案

一:重裝 MySQL 數(shù)據(jù)庫(kù),版本選擇 5.7 或者 5.7 以上版本

二:將

`reg_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '注冊(cè)時(shí)間',

改為

`reg_time` datetime DEFAULT  NULL COMMENT '注冊(cè)時(shí)間',

即可

附圖:

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

镇原县| 中江县| 通榆县| 维西| 凉城县| 三都| 宣威市| 江山市| 江山市| 应用必备| 澄城县| 高雄县| 大化| 虞城县| 乌审旗| 炉霍县| 巴林左旗| 牡丹江市| 阿图什市| 宝兴县| 洱源县| 虞城县| 江华| 湖州市| 山丹县| 肥东县| 新绛县| 日喀则市| 岫岩| 封丘县| 兴文县| 蕲春县| 余干县| 西吉县| 黑龙江省| 三门县| 辛集市| 三门峡市| 宜阳县| 饶河县| 乳山市|