MySQL备份表报错ERROR 1786

数据库
今天我们来看一个mysql备份表出现的报错案例。一起来学习一下吧。

Mysql单表备份有很多方式,对于数据量比较大的表,可以使用mysqldump

小表通常使用如下语句就行了。

create   table  A   as  select *  from  B

在一次备份中出现如下错误。

mysql> create tables deptmember_bak  as select * from deptmember;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'tables deptmember_bak as select * from deptmember' at line 1

查询官方资料,原因是MySQL 5.6.7及更高的版本,开启了enforce_gtid_consistency=true 功能导致的,MySQL官方解释说当启用 enforce_gtid_consistency 功能的时候,MySQL只允许能够保障事务安全,并且能够被日志记录的SQL语句被执行,像create table … select 和 create temporarytable语句,以及同时更新事务表和非事务表的SQL语句或事务都不允许执行,所以默认关闭掉,需要开启时再启用

查看环境enforce_gtid_consistency参数为开启状态。

mysql> show variables like 'ENFORCE_GTID_CONSISTENCY';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| enforce_gtid_consistency | ON |
+--------------------------+-------+
1 row in set (0.01 sec)

下面提供了2种方案,可以根据情况自由选择

一、方法一:修改数据库参数

解决办法关闭GTID模式

mysql配置my.cnf里面修改参数如下

gtid_mode = OFF
enforce_gtid_consistency = OFF

重启mysql再次查看已经生效,再次执行备份就不会报错了

mysql> show variables like '%gtid_mode%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| gtid_mode | OFF |
+---------------+-------+
1 row in set (0.01 sec)
mysql> show variables like '%enforce_gtid_consistency%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| enforce_gtid_consistency | OFF |
+--------------------------+-------+
1 row in set (0.01 sec)

二、方法二:分步操作

方法二采用先复制目标表结构,然后插入数据的方式,这种方法的好处是不用重启数据库

mysql> create table deptmember_bak like deptmember;
Query OK, 0 rows affected (0.11 sec)
mysql> insert into deptmember_bak select * from deptmember;
Query OK, 4 rows affected (0.01 sec)
Records: 4 Duplicates: 0 Warnings: 0
责任编辑:庞桂玉 来源: 运维之美
相关推荐

2010-05-31 16:10:30

MySQL备份

2017-07-07 10:40:24

MySQL备份原理

2011-04-07 17:21:38

mysqlhotcop备份MySQL

2010-10-15 11:39:54

Mysql表备份

2017-07-10 16:00:47

Mysql数据备份数据还原

2011-10-17 16:11:00

MySQL

2011-03-28 16:12:55

mysql自动远程备份

2011-03-23 17:21:42

2022-05-30 11:21:25

数据库MySQL工具

2015-03-18 13:39:35

MySQLBackup数据库备份种类

2009-12-15 14:36:24

2013-09-09 17:17:18

MYSQL自动备份

2011-05-16 11:29:00

MySQL自动备份

2009-11-20 09:29:53

2023-05-11 08:46:28

MySQL

2017-07-10 14:26:03

Mysql数据备份数据恢复

2012-07-17 08:44:26

MySQL

2019-03-01 13:40:01

MySQL数据库备份案例

2013-08-07 14:04:22

MySQL备份

2011-08-25 09:33:25

MySQL运维
点赞
收藏

51CTO技术栈公众号