色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

MySQL 如何處理隱式默認(rèn)值

瀏覽:3日期:2023-10-07 17:21:23

有同學(xué)說(shuō)遇到了主從不一致的問(wèn)題。

大概情況是,從庫(kù)是用mysqldump導(dǎo)出導(dǎo)入數(shù)據(jù)的方式創(chuàng)建的。創(chuàng)建成功后,在用mysqldump驗(yàn)證主從的表結(jié)構(gòu)是否一致的時(shí)候,發(fā)現(xiàn)有些表定義不一致:

MySQL 如何處理隱式默認(rèn)值

從他的比較結(jié)果可以看到,在從庫(kù)端,有三個(gè)列的定義中被加入了“default null”。

懷疑環(huán)境被人人為修改過(guò),但是最終確認(rèn)環(huán)境沒(méi)有被動(dòng)過(guò)。然后又做了一邊測(cè)試,使用mysqldump導(dǎo)出數(shù)據(jù),使用source將數(shù)據(jù)導(dǎo)入從庫(kù)后,發(fā)現(xiàn)還是有這個(gè)現(xiàn)象,問(wèn)是不是source命令有bug!

其實(shí),這個(gè)跟MySQL內(nèi)部如何處理隱式默認(rèn)值有關(guān)。

如果數(shù)據(jù)類型沒(méi)有包含顯式的default值,MySQL會(huì)按照如下的規(guī)則確定默認(rèn)值:·如果該列可以采用NULL值作為值,該列在定義的時(shí)候會(huì)被加上一個(gè)顯式的default null子句·如果該列不可以采用NULL值作為值,該列在定時(shí)候就不會(huì)加上一個(gè)顯式的default子句

對(duì)于將數(shù)據(jù)輸入沒(méi)有顯式DEFAULT子句的NOT NULL列的情況,如果INSERT或REPLACE語(yǔ)句不包含該列的值,或者UPDATE語(yǔ)句將該列設(shè)置為NULL,屆時(shí)則MySQL將根據(jù)有效的SQL Mode處理該列:·如果啟用了嚴(yán)格的SQL模式(strict SQL mode),則事務(wù)表將發(fā)生錯(cuò)誤,并且該語(yǔ)句將回滾。對(duì)于非事務(wù)表,會(huì)發(fā)生錯(cuò)誤,但是如果此錯(cuò)誤發(fā)生在多行語(yǔ)句的第二行或后續(xù)行中,則該錯(cuò)誤之前的所有行均已插入?!と绻磫⒂脟?yán)格模式,則MySQL將列設(shè)置為列數(shù)據(jù)類型的隱式默認(rèn)值。

假設(shè)表t定義如下:

mysql> create table t(i int not null);

這里,i沒(méi)有顯式的默認(rèn)值。在嚴(yán)格的sql mode下,下面的語(yǔ)句都會(huì)產(chǎn)生錯(cuò)誤,插入失敗。

mysql> show variables like ’%sql_mode%’;+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+| Variable_name | Value |+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+| sql_mode | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+1 row in set (0.01 sec) mysql> INSERT INTO t VALUES();ERROR 1364 (HY000): Field ’i’ doesn’t have a default valuemysql> INSERT INTO t VALUES(DEFAULT);ERROR 1364 (HY000): Field ’i’ doesn’t have a default valuemysql> INSERT INTO t VALUES(DEFAULT(i));ERROR 1364 (HY000): Field ’i’ doesn’t have a default valuemysql>

在非嚴(yán)格的sql mode下:

mysql> SET @@sql_mode=’’;Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> show variables like ’%sql_mode%’;+---------------+-------+| Variable_name | Value |+---------------+-------+| sql_mode | |+---------------+-------+1 row in set (0.00 sec) mysql> INSERT INTO t VALUES();Query OK, 1 row affected, 1 warning (0.00 sec) mysql> INSERT INTO t VALUES(DEFAULT);Query OK, 1 row affected, 1 warning (0.01 sec) mysql> INSERT INTO t VALUES(DEFAULT(i));ERROR 1364 (HY000): Field ’i’ doesn’t have a default valuemysql> select * from t;+---+| i |+---+| 0 || 0 |+---+2 rows in set (0.01 sec) mysql>

對(duì)于給定的表,SHOW CREATE TABLE語(yǔ)句顯示哪些列具有顯式的DEFAULT子句。對(duì)于隱式的默認(rèn)值定義如下:·對(duì)于numeric類型,默認(rèn)值為0,但對(duì)于用AUTO_INCREMENT屬性聲明的整數(shù)或浮點(diǎn)類型,默認(rèn)值為序列中的下一個(gè)值?!?duì)于除TIMESTAMP以外的date和time類型,默認(rèn)值為該類型的'零'值。如果啟用了explicit_defaults_for_timestamp系統(tǒng)變量,對(duì)于TIMESTAMP也是如此。否則,對(duì)于表中的第一個(gè)TIMESTAMP列,默認(rèn)值為當(dāng)前日期和時(shí)間?!?duì)于ENUM以外的其他字符串類型,默認(rèn)值為空字符串。對(duì)于ENUM,默認(rèn)值為第一個(gè)枚舉值。

mysql> create table t1(id int,name varchar(20));Query OK, 0 rows affected (0.04 sec) mysql> show create table t1G*************************** 1. row *************************** Table: t1Create Table: CREATE TABLE `t1` ( `id` int(11) DEFAULT NULL, `name` varchar(20) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8mb41 row in set (0.00 sec) mysql>

以上就是MySQL 如何處理隱式默認(rèn)值的詳細(xì)內(nèi)容,更多關(guān)于MySQL 隱式默認(rèn)值的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: MySQL 數(shù)據(jù)庫(kù)
相關(guān)文章:
主站蜘蛛池模板: 国产韩国精品一区二区三区久久 | 欧美日韩加勒比一区二区三区 | 中文字幕在线观看一区 | 免费网站看v片在线香蕉 | 88av视频在线 | 黄a视频| 一区二区网站在线观看 | 欧美日韩一区二区综合在线视频 | 亚洲高清国产拍精品影院 | 国产精品免费aⅴ片在线观看 | 一级片美女| 久久久亚洲天堂 | 国产片91 | 国产一区第一页 | 日产一一到六区网站免费 | 亚洲精品高清久久 | 国产人成午夜免费噼啪视频 | 欧美韩国xxx | 欧美特级一级毛片 | 国产精品1区2区 | 三级全黄的全黄三级三级播放 | 99re久久资源最新地址 | 国产成人福利视频在线观看 | 国产精品理论 | 久久91精品国产91久久 | 国产精品va一级二级三级 | 久草视频在线资源 | 欧美成人亚洲综合精品欧美激情 | 好看的亚洲视频 | 久久频这里精品99香蕉久网址 | 国产精品午夜国产小视频 | 亚洲免费中文 | 久久道 | 亚洲视频中文字幕在线观看 | 91精选视频在线观看 | 国产欧美综合在线一区二区三区 | 精品热线九九精品视频 | 欧美一级在线免费观看 | 日本大臿亚洲香蕉大片 | 久久精品国产第一区二区 | www.av视频在线 |