【报错信息】
执行create table ... select的时候遇到报错:
【报错原因】
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服务才能是配置生效。
尝试在线动态修改时的报错:
修改配置文件my.cnf
gtid_mode=OFF
enforce_gtid_consistency=OFF
重启MySQL(这样既关闭了GTID模式)
如果不想关闭GTID模式,可以将create table (表名) select * from (表名)改写。