服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - mysql错误处理之ERROR 1786 (HY000)

mysql错误处理之ERROR 1786 (HY000)

2020-04-08 16:49hebedich Mysql

最近一直在mysql的各个版本直接徘徊,这中间遇到了各种各样的错误,将已经处理完毕的几个错误整理了一下,分享给大家,首先我们来看看错误提示 ERROR 1786 (HY000)

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语句或事务都不允许执行。

?
1
2
3
4
5
6
7
8
9
10
11
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

 

延伸 · 阅读

精彩推荐