mysqld --ansi
等效於設定:
--transaction-isolation=SERIALIZABLE
--sql-mode=REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE
SET GLOBAL TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SET GLOBAL sql_mode = 'REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE';
SET GLOBAL sql_mode = 'ANSI';
驗證:
SELECT @@global.sql_mode;
-- 輸出:REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI
ANSI_QUOTES:雙引號識別為識別符(資料表/欄位名),字串必須用單引號PIPES_AS_CONCAT:|| 視為字串串聯而非邏輯 ORREAL_AS_FLOAT:REAL 視為 FLOAT 同義詞IGNORE_SPACE:函數名與括號間允許空格SERIALIZABLE 隔離等級:最高隔離,避免幻讀但並發度最低sql_mode=ANSI 跑測試套件|| 邏輯 OR 等不相容寫法sql_mode 組合(如 STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION),避免依賴預設值變更