本篇文章給大家?guī)砹岁P(guān)于mysql的相關(guān)知識,其中主要跟大家聊一聊sql_mode的各模式有哪些,感興趣的朋友下面一起來看一下吧,希望對大家有幫助。
sql_mode的各模式介紹
查看 sql_mode
(資料圖片僅供參考)
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.16 sec)
STRICT_TRANS_TABLES
在插入或更新數(shù)據(jù)時,如果某個字段的值無法轉(zhuǎn)換為目標數(shù)據(jù)類型,則 MySQL 會報錯。此模式只適用于事務(wù)表。
所以這個模式不一致會導(dǎo)致同樣代碼在不同環(huán)境報錯
此模式只針對 innodb 表
STRICT_ALL_TABLES
與 STRICT_TRANS_TABLES 類似,但是此模式適用于所有表,包括非 innodb 表。
ERROR_FOR_DIVISION_BY_ZERO
如果除數(shù)為零,則 MySQL 會拋出錯誤。如果未啟用此模式,則 MySQL 將返回 NULL。
NO_AUTO_CREATE_USER
當 MySQL 使用 GRANT 語句創(chuàng)建新用戶時,不允許創(chuàng)建不存在的用戶。如果啟用此模式,則必須先手動創(chuàng)建用戶。
NO_ENGINE_SUBSTITUTION
如果指定的存儲引擎不存在,則 MySQL 不會替換為其他存儲引擎,而是報錯。
ANSI_QUOTES
啟用此模式后,MySQL 會將雙引號視為標識符的引號,而不是字符串的引號。
IGNORE_SPACE
如果啟用此模式,則 MySQL 會忽略 SQL 語句中的空格。這樣可以在不更改 SQL 語句結(jié)構(gòu)的情況下美化 SQL 語句。
ONLY_FULL_GROUP_BY
如果啟用此模式,則在 GROUP BY 語句中必須包含所有非聚合的列,否則 MySQL 會報錯。
NO_ZERO_IN_DATE
如果啟用此模式,則 MySQL 不允許在日期或時間中使用零值。
NO_ZERO_DATE
如果啟用此模式,則 MySQL 不允許使用 “0000-00-00” 日期。
推薦學(xué)習(xí):《MySQL視頻教程》
以上就是聊聊sql_mode的各模式有哪些的詳細內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!
關(guān)鍵詞: