1.1.1. ERROR 1786 (HY000)
【环境描写叙述】
msyql5.6.14
【报错信息】
运行create table ... select的时候遇到报错:
db1 [test] [23:01:58]> create tablelgmnr_bak select * from lgmnr;
ERROR 1786 (HY000): CREATE TABLE ... SELECTis 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