1. 程式人生 > 其它 >Mysql各版本sql_mode說明

Mysql各版本sql_mode說明

版本差異

MySQL 5.5:空
MySQL 5.6:NO_ENGINE_SUBSTITUTION
MySQL 5.7: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
MySQL 8.0:ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_ENGINE_SUBSTITUTION

詳細說明
ONLY_FULL_GROUP_BY
對於GROUP BY聚合操作,如果在SELECT中的列,沒有在GROUP BY中出現,那麼這個SQL是不合法的,因為列不在GROUP BY從句中

STRICT_TRANS_TABLES
該選項針對事務性儲存引擎生效,對於非事務性儲存引擎無效,該選項表示開啟strict sql模式。在strict sql模式下,在INSERT或者UPDATE語句中,插入或者更新了某個不符合規定的欄位值,則會直接報錯中斷操作

NO_ZERO_IN_DATE
MySQL中插入的時間欄位值,不允許日期和月份為零

NO_ZERO_DATE
MySQL中插入的時間欄位值,不允許日期為零

ERROR_FOR_DIVISION_BY_ZERO
INSERT或者UPDATE語句中,如果資料被0除,則出現警告(非strict sql模式下)或者錯誤(strict sql模式下)。
當該選項關閉時,數字被0除,得到NULL且不會產生警告
當該選項開啟且處於非strict sql模式下,數字被0除,得到NULL但是會產生警告
當該選項開啟且處於strict sql模式下,數字被0除,產生錯誤且中斷操作

NO_AUTO_CREATE_USER
之前版本中使用GRANT語法,如果使用者不存在則會自動建立使用者,該選項限制該功能

NO_ENGINE_SUBSTITUTION
在使用CREATE TABLE或者ALTER TABLE語法執行儲存引擎的時候,如果設定的儲存引擎被禁用或者未編譯,會產生錯誤。


作者:舊舊的 <[email protected]> 擯棄世俗浮躁,追求技術精湛