MySQL報錯ERROR 1786 #Olivia丶長歌#
阿新 • • 發佈:2019-02-20
【報錯資訊】
執行create table ... select的時候遇到報錯:
複製程式碼 程式碼如下:db1 [test] [23:01:58]> create table nifa_trade_1 select * from nifa_trade;
ERROR 1786 (HY000): CREATE TABLE ... SELECT is forbidden when @@GLOBAL.ENFORCE_GTID_CONSISTENCY = 1
【報錯原因】
ERROR1786是由於開啟了enforce_gtid_consistency=true功能導致的,MySQL官方解釋說當啟用enforce_gtid_consistency功能的時候,MySQL只允許能夠保障事務安全,並且能夠被日誌記錄的SQL語句被執行,像create table ... select 和 create temporarytable語句,以及同時更新事務表和非事務表的SQL語句或事務都不允許執行。
db1 [test] [23:28:28]> show variableslike 'ENFORCE_GTID_CONSISTENCY'; +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | enforce_gtid_consistency | ON | +--------------------------+-------+
【解決方法】
由於enforce_gtid_consistency引數是隻讀的,所以必須重啟MySQL服務才能是配置生效。
嘗試線上動態修改時的報錯:
複製程式碼 程式碼如下:db1 [test] [23:37:56]> set globalenforce_gtid_consistency=true;
ERROR 1238 (HY000): Variable'enforce_gtid_consistency' is a read only variable
修改配置檔案my.cnf
gtid_mode=OFF
enforce_gtid_consistency=OFF
重啟MySQL(這樣既關閉了GTID模式)
如果不想關閉GTID模式,可以將create table (表名) select * from (表名)改寫。