首頁 >資料庫 >mysql教程 >如何在MySQL中永久設定全域SQL_MODE?

如何在MySQL中永久設定全域SQL_MODE?

Patricia Arquette
Patricia Arquette原創
2024-12-01 17:00:12695瀏覽

How to Permanently Set Global SQL_MODE in MySQL?

在 MySQL 中設定全域 SQL_MODE:指南

使用 MySQL 時,常常會遇到需要修改 SQL_MODE 設定的情況。此模式控制一系列 SQL 行為和解析器配置,影響資料驗證、交易處理等因素。

指令結構正確嗎?

設定多種模式的語法使用SET指令的SQL_MODE是正確的:

SET GLOBAL SQL_MODE='NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLE','NO_AUTO_CREATE_USER','NO_ENGINE_SUBSTITUTION'

Session和Global的優點模式

  • 會話模式: 僅影響目前會話,並在會話終止時重設。非常適合臨時或特定於使用者的 SQL_MODE 設定。
  • 全域模式: 影響所有後續會話,直到修改為止。適合適用於所有使用者的系統範圍內的永久配置。

全域模式與會話模式

當遇到使用不同使用者使用UNC 值更新資料庫等場景時,為NO_BACKSLASH_ESCAPES 設定全域模式是有意義的,因為它可以確保所有用戶都受到影響,無論其會話設定如何。

設定全域SQL_MODE 永久

不幸的是,使用 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn