在 MySQL 5.6.14 中執行 CREATE TABLE ... SELECT 時遇到:
ERROR 1786 (HY000): CREATE TABLE ... SELECT is forbidden when @@GLOBAL.ENFORCE_GTID_CONSISTENCY = 1
開啟 enforce_gtid_consistency=ON 後,MySQL 僅允許「事務安全且可被 Binlog 記錄」的語句執行。CREATE TABLE ... SELECT、CREATE TEMPORARY TABLE、混合更新事務表與非事務表等操作均被禁止,因其無法保證 GTID 一致性。
mysql> SHOW VARIABLES LIKE 'ENFORCE_GTID_CONSISTENCY'; +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | enforce_gtid_consistency | ON | +--------------------------+-------+
enforce_gtid_consistency 為只讀變數,無法動態修改,嘗試 SET GLOBAL 會報 ERROR 1238 (HY000)。必須修改配置文件 my.cnf 並重啟 MySQL:
# my.cnf [mysqld] enforce_gtid_consistency = OFF
重啟後驗證:
mysql> SHOW VARIABLES LIKE 'ENFORCE_GTID_CONSISTENCY'; +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | enforce_gtid_consistency | OFF | +--------------------------+-------+
CREATE TABLE 再 INSERT ... SELECT,或使用 CREATE TABLE LIKE + INSERT 組合。