成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

國產數據庫兼容過程中涉及的MySQL非嚴格模式

數據庫 MySQL
MySQL的非嚴格模式指的是在MySQL配置中禁用嚴格模式(Strict Mode)的情況下執行的SQL。在非嚴格模式下,MySQL會對某些數據插入、更新和比較操作執行隱式轉換,從而在一些情況下允許執行一些寬松的操作,而不拋出錯誤或警告。

在國產數據庫兼容適配過程中,經常遇到因源數據庫是MySQL,遷移至其他國產數據庫后,因MySQL端兼容模式有非嚴格模式,導致適配過程過程中需要做調整。那么,MySQL主要的非嚴格模式小結如下:

1、非嚴格模式參數

MySQL的非嚴格模式指的是在MySQL配置中禁用嚴格模式(Strict Mode)的情況下執行的SQL。在非嚴格模式下,MySQL會對某些數據插入、更新和比較操作執行隱式轉換,從而在一些情況下允許執行一些寬松的操作,而不拋出錯誤或警告。
涉及的主要參數說明如下:

a) STRICT_TRANS_TABLES:在插入或更新數據時,禁止自動轉換類型,確保所有數據都符合表定義的數據類型范圍。如果值無法轉換為合法的數據類型,則拋出錯誤。
b) STRICT_ALL_TABLES:對所有表都啟用STRICT_TRANS_TABLES模式,確保數據插入或更新時嚴格符合表定義的數據類型。
c) NO_ZERO_IN_DATE:禁止在日期中使用零值,例如'0000-00-00',在嚴格模式下會被視為非法日期。
d) NO_ZERO_DATE:禁止使用零值表示日期的部分,例如'2000-00-00',在嚴格模式下會被視為非法日期。
e) ERROR_FOR_DIVISION_BY_ZERO:當除數為零時,拋出錯誤而不是返回NULL。
f) ANSI_QUOTES:啟用ANSI_QUOTES模式,要求使用雙引號來引用字符串,而不是MySQL默認的單引號。
g) NO_AUTO_CREATE_USER:禁止在GRANT語句中自動創建新用戶。
h) NO_ENGINE_SUBSTITUTION:如果指定的存儲引擎不可用,不允許MySQL使用默認的存儲引擎替代。

2、簡單舉例

以下是一些非嚴格模式下可能出現的案例情況:

非嚴格的日期和時間插入:在非嚴格模式下,MySQL允許插入不符合日期和時間格式的值,會自動進行轉換或舍入
eg:  不合法的日期值'0000-00-00'等

非嚴格的字符串插入:在非嚴格模式下,MySQL允許插入過長的字符串,會自動截斷超過字段長度的部分 (建議已開啟此類嚴格模式)
eg:   varchar(2) 類型的字段,插入ABC可以成功,插入結果為AB

非嚴格的數值插入:在非嚴格模式下,MySQL允許插入超出字段范圍的數值,會自動進行范圍調整(建議已開啟此類嚴格模式)
eg:  TINYINT(默認最大127) 可以插入150,且插入后的值自動截斷為 127

非嚴格的零值插入:在非嚴格模式下,MySQL允許插入字符串類型的值到數值類型字段,會將非數值字符串轉換為0 (建議已開啟此類嚴格模式)
eg:  例如可以將字符串'123' 插入int類型,結果是123;將'abc'插入int,結果是0

非嚴格的分組查詢:在非嚴格模式下,MySQL允許在GROUP BY查詢中選擇非聚合列,這可能導致不確定的結果
eg:  SELECT   a,b,COUNT(*)  FROM  tb GROUP BY a

非嚴格的NULL值比較:在非嚴格模式下,MySQL允許使用普通比較運算符(如=、<、>等)與NULL值進行比較,這可能導致不確定的結果 (建議已開啟此類嚴格模式)
eg:  column_name =NULL 或者 column_name <> NULL

非嚴格的外鍵約束:在非嚴格模式下,MySQL對外鍵約束的檢查較為寬松,可能會允許插入或更新關聯字段中不存在的值。(建議已開啟此類嚴格模式)
eg:  tb表外鍵字段指向ta表的主鍵,如果tb表的外鍵字段插入的內容不存在于a表中時也可以寫入成功

非嚴格的除數為0校驗:在非嚴格模式下,MySQL允許除數為0
eg:  10/0 ,結果為null

非嚴格的字符串引號標識:在非嚴格模式下,MySQL允許單引號及雙引號來引用字符串
eg: 'abc' 或 "abc"均可

非嚴格的grant模式自動創建用戶:在非嚴格模式下,MySQL允許grant語句中如果用戶不存在時自動創建用戶
eg:  grant select  on db1)tb1 to test;

非嚴格的存儲引擎自動替代:  在非嚴格模式下,MySQL允許指定的存儲引擎不可用是使用默認的存儲引擎替代
eg: create table tb2(id int primary key ) engin = aaa;

PS:還會有其他的非嚴格模式的組合以及不同數據庫的兼容模式情況,大家可以繼續探索。

責任編輯:姜華 來源: 數據庫干貨鋪
相關推薦

2022-08-08 09:20:41

數據庫遷移

2020-02-03 12:12:28

MySQL數據庫SQL

2010-01-11 16:28:36

Fedora 2安裝

2010-08-02 09:52:19

DB2數據庫優化

2024-07-11 08:00:42

2011-03-11 09:14:18

國產數據庫

2011-03-11 09:26:13

2011-07-22 17:37:18

MySQL數據庫

2011-07-07 13:59:54

存儲過程遠程數據庫Oracle數據庫

2009-07-23 14:10:38

Hibernate J

2011-03-04 17:38:52

2011-11-04 14:07:40

存儲

2011-08-01 13:28:09

Oracle歸檔模式非歸檔模式

2010-10-14 13:18:55

MySQL存儲過程

2010-06-12 14:02:13

2011-03-25 14:27:40

數據庫開發程序員

2024-09-30 08:01:12

Oracle數據庫服務生態

2016-09-07 20:28:17

MySQL存儲數據庫

2010-05-27 17:45:13

MySQL存儲過程

2010-05-31 16:57:09

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费99精品国产自在在线 | 国产精品久久久久久久久久久久久 | 青青草一区二区三区 | www.一区二区三区.com | 欧洲精品视频一区 | 亚洲天堂中文字幕 | 中文字幕av网 | 日韩2020狼一二三 | 久久69精品久久久久久国产越南 | 日韩 欧美 二区 | 久久一区 | 中文字幕av亚洲精品一部二部 | 久久精品黄色 | 亚洲精品乱码久久久久v最新版 | 国产精品久久久久久久午夜片 | www日本高清 | 91久久久久久 | 亚洲高清久久 | 亚洲精品一区二区三区中文字幕 | 国产综合久久 | 亚洲理论在线观看电影 | 黄色网址免费在线观看 | 欧洲色 | 欧美精品一区三区 | 精品av | 黄色日本视频 | 国产成人在线一区二区 | 操一草| 久草资源在线视频 | 激情欧美一区二区三区 | 夜久久 | 亚洲精品乱码久久久久久蜜桃91 | 久草视频在线播放 | 性色av一区二区三区 | 国产亚洲精品a | 精品国产一二三区 | www.一区二区三区 | 久久久久久女 | 丝袜久久 | 国产性色视频 | 在线三级网址 |