mysql sql_mode

下則為河岳,上則為日星

查詢當前sql_mode

SELECT @@sql_mode

幾種sql_mode模式介紹

sql_mode模式是具體的幾種 sql_mode值的集合烛亦,我們可以直接指定這個來方便達到使用多種sql_mode值的目的


image.png
ANSI模式

寬松模式盒使,對插入數(shù)據(jù)進行校驗捣作,如果不符合定義類型或長度衣摩,對數(shù)據(jù)類型調整或截斷保存卜录,報warning警告戈擒。

SET SESSION sql_mode = 'ANSI';
SET GLOBAL sql_mode = 'ANSI';
TRADITIONAL模式

嚴格模式,當向mysql數(shù)據(jù)庫插入數(shù)據(jù)時艰毒,進行數(shù)據(jù)的嚴格校驗筐高,保證錯誤數(shù)據(jù)不能插入,報error錯誤。用于事物時凯傲,會進行事物的回滾犬辰。

SET SESSION sql_mode = 'TRADITIONAL';
SET GLOBAL sql_mode = 'TRADITIONAL';
STRICT_TRANS_TABLES模式

嚴格模式,進行數(shù)據(jù)的嚴格校驗冰单,錯誤數(shù)據(jù)不能插入幌缝,報error錯誤。

SET SESSION sql_mode = 'STRICT_TRANS_TABLES';
SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES';
ORACLE模式
SET SESSION sql_mode = 'ORACLE';
SET GLOBAL sql_mode = 'ORACLE';

PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER

MSSQL模式(sql server)
SET SESSION sql_mode = 'MSSQL';
SET GLOBAL sql_mode = 'MSSQL';

PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MSSQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS

具體sql mode的值

ANSI

1诫欠、REAL_AS_FLOAT
將real視為float的同義詞涵卵。默認情況下,mysql將real視為double的同義詞荒叼。

2轿偎、PIPES_AS_CONCAT
|| 符號視為字符串連接操作符

3、ANSI_QUOTES
"視為標識符引用字符(如""引用字符),而不是字符串引用字符被廓。啟用此模式后坏晦,您仍然可以使用`來引用標識符。啟用ansi_quotes后嫁乘,不能使用雙引號來引用文字字符串昆婿,因為它們被解釋為標識符。

舉個例子:若沒有指定ansi_quotes蜓斧,則可以這樣 SELECT "11" ,這里將雙引號內容被認為是字符串仓蛆,查詢會成功執(zhí)行;若指定了ansi_quotes挎春,則該查詢報錯看疙。因為此時內容被認為是 字段名(類似于``)

4、IGNORE_SPACE
允許函數(shù)名和(字符)之間有空格直奋。這導致內置函數(shù)名被視為保留字

5能庆、ONLY_FULL_GROUP_BY
對于GROUP BY聚合操作,如果在SELECT中的列脚线,沒有在GROUP BY中出現(xiàn)相味,那么將認為這個SQL是不合法的,因為列不在GROUP BY從句中

TRADITIONAL

1殉挽、STRICT_TRANS_TABLES
為事務引擎啟用嚴格的sql模式,并盡量為非事務引擎啟用

2拓巧、STRICT_ALL_TABLES
為所有的存儲引擎啟用嚴格的sql模式

3斯碌、NO_ZERO_IN_DATE
在嚴格模式,不接受月或日部分為0的日期肛度。如果使用IGNORE選項傻唾,我們?yōu)轭愃频娜掌诓迦?0000-00-00'。在非嚴格模式,可以接受該日期冠骄,但會生成警告伪煤。

4、NO_ZERO_DATE
在嚴格模式凛辣,不要將 '0000-00-00'做為合法日期抱既。你仍然可以用IGNORE選項插入零日期。在非嚴格模式扁誓,可以接受該日期防泵,但會生成警告

5、ERROR_FOR_DIVISION_BY_ZERO
在嚴格模式蝗敢,在INSERT或UPDATE過程中捷泞,如果被零除(或MOD(X,0))寿谴,則產生錯誤(否則為警告)锁右。如果未給出該模式,被零除時MySQL返回NULL讶泰。如果用到INSERT IGNORE或UPDATE IGNORE中咏瑟,MySQL生成被零除警告,但操作結果為NULL峻厚。

6响蕴、NO_AUTO_CREATE_USER
防止GRANT自動創(chuàng)建新用戶,除非還指定了密碼惠桃。

7浦夷、NO_ENGINE_SUBSTITUTION
如果需要的存儲引擎被禁用或未編譯,那么拋出錯誤辜王。不設置此值時劈狐,用默認的存儲引擎替代,并拋出一個異常呐馆。

其它的

1肥缔、PAD_CHAR_TO_FULL_LENGTH
默認情況下,檢索時從char列值中刪除尾隨空格汹来。如果啟用了pad_char_to_full_length续膳,則不會發(fā)生調整,檢索到的char值會被填充到其全長收班。此模式不適用于varchar列坟岔,檢索時會為這些列保留尾隨空格。

2摔桦、NO_KEY_OPTIONS

不要在show create表的輸出中打印mysql特定的索引選項
3社付、NO_TABLE_OPTIONS
不要在show create table的輸出中打印mysql特定的表選項(如engine),由此獲得更加通用的腳本

4、NO_FIELD_OPTIONS
不要在show create表的輸出中打印mysql特定的列選項

sql_mode在數(shù)據(jù)遷移中的應用

如果mysql 與其它異構數(shù)據(jù)庫之間有數(shù)據(jù)遷移的需求時鸥咖,那么mysql中提供的數(shù)據(jù)庫組合模式則會對數(shù)據(jù)遷移過程會有所幫助燕鸽。對導出數(shù)據(jù)更容易導入目標。

1啼辣、 通過設置sql mode, 可以完成不同嚴格程度的數(shù)據(jù)校驗啊研,有效地保障數(shù)據(jù)準備性。
2熙兔、 通過設置sql model 為ansi 模式悲伶,來保證大多數(shù)sql符合標準的sql語法,這樣應用在不同數(shù)據(jù)庫之間進行遷移時住涉,則不需要對業(yè)務sql 進行較大的修改麸锉。
3、 在不同數(shù)據(jù)庫之間進行數(shù)據(jù)遷移之前舆声,通過設置SQL Mode 可以使MySQL 上的數(shù)據(jù)更方便地遷移到目標數(shù)據(jù)庫中花沉。

SET SESSION sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';
SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';

修改配置的方式

[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市媳握,隨后出現(xiàn)的幾起案子碱屁,更是在濱河造成了極大的恐慌,老刑警劉巖蛾找,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件娩脾,死亡現(xiàn)場離奇詭異,居然都是意外死亡打毛,警方通過查閱死者的電腦和手機柿赊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來幻枉,“玉大人碰声,你說我怎么就攤上這事“靖Γ” “怎么了胰挑?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長椿肩。 經常有香客問我瞻颂,道長,這世上最難降的妖魔是什么郑象? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任蘸朋,我火速辦了婚禮,結果婚禮上扣唱,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好噪沙,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布炼彪。 她就那樣靜靜地躺著,像睡著了一般正歼。 火紅的嫁衣襯著肌膚如雪辐马。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天局义,我揣著相機與錄音喜爷,去河邊找鬼。 笑死萄唇,一個胖子當著我的面吹牛檩帐,可吹牛的內容都是我干的。 我是一名探鬼主播另萤,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼湃密,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了四敞?” 一聲冷哼從身側響起泛源,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎忿危,沒想到半個月后达箍,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡铺厨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年缎玫,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片努释。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡碘梢,死狀恐怖,靈堂內的尸體忽然破棺而出伐蒂,到底是詐尸還是另有隱情煞躬,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布逸邦,位于F島的核電站恩沛,受9級特大地震影響,放射性物質發(fā)生泄漏缕减。R本人自食惡果不足惜雷客,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望桥狡。 院中可真熱鬧搅裙,春花似錦皱卓、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至兄朋,卻和暖如春掐禁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背颅和。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工傅事, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人峡扩。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓蹭越,卻偏偏與公主長得像,于是被迫代替她去往敵國和親有额。 傳聞我的和親對象是個殘疾皇子般又,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內容