使用 MySQL 時,常常會遇到需要修改 SQL_MODE 設定的情況。此模式控制一系列 SQL 行為和解析器配置,影響資料驗證、交易處理等因素。
設定多種模式的語法使用SET指令的SQL_MODE是正確的:
SET GLOBAL SQL_MODE='NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLE','NO_AUTO_CREATE_USER','NO_ENGINE_SUBSTITUTION'
當遇到使用不同使用者使用UNC 值更新資料庫等場景時,為NO_BACKSLASH_ESCAPES 設定全域模式是有意義的,因為它可以確保所有用戶都受到影響,無論其會話設定如何。
不幸的是,使用 SET 直接修改全域設定並不持久,並且會在 MySQL 重新啟動後重置。若要使變更永久生效,請在設定檔(/etc/mysql/my.cnf) 中設定模式:
[mysqld] sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
對於較新的MySQL 版本(例如5.7.8 ),請使用下列語法:
[mysqld] sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"
對於影響所有使用者的系統範圍的持久SQL_MODE設置,設置一個全域的模式是首選方法。應在設定檔中進行永久性更改,確保所需的 SQL 行為在會話之間保持一致。
以上是如何在MySQL中永久設定全域SQL_MODE?的詳細內容。更多資訊請關注PHP中文網其他相關文章!