一、环境 mysql 5.7.36
导入数据报错:ERROR 2006 (HY000) at line 1: MySQL server has gone away
二、验证
1、创建测试数据
1)创建表结构
CREATE TABLE `cs_log` (
`branch_id` bigint(20) NOT NULL ,
`xid` varchar(100) DEFAULT NULL,
`context` varchar(128) DEFAULT NULL,
`rollback_info` longblob NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
2)导入数据
1.开启参数需要重启数据库
secure_file_priv=/tmp/cs
2.创建目录并授权
mkdir /tmp/cs
chmod 777 /tmp/cs
3.上传测试数据
百度网盘下载data1.txt 文件
链接:data1.txt
提取码:zfqz
移动测试文件到/tmp/cs/data1.txt 下面
mv data1.txt /tmp/cs/data1.txt
4.导入数据
LOAD DATA INFILE '/tmp/cs/data1.txt'
INTO TABLE cs_log
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
2、错误复现
1)修改客户端连接
set global max_allowed_packet = 1024;
2)导入数据
百度网盘下载1.sql文件
链接:1.sql 文件
提取码:aied
三、解决方式
1、源端执行
1)源端开启参数需要重启数据库(写配置文件里面)
secure_file_priv=/tmp/cs #mysql数据
2)源端创建目录并授权
mkdir /tmp/cs
chmod 777 /tmp/cs
3)源端导出数据
SELECT *
INTO OUTFILE '/tmp/cs/data1.txt' #/tmp/cs/data1.txt 数据文件位置
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
FROM cs_log; #cs_log 要导出数据的表名
2、目标端执行
1)源端开启参数需要重启数据库(写配置文件里面)
secure_file_priv=/tmp/cs #mysql数据
2)目标端创建目录
mkdir /tmp/cs
chmod 777 /tmp/cs
3)目标端数据导入到目标端
scp 源端/tmp/cs/data1.txt /tmp/cs/
4)数据库执行导入命令
LOAD DATA INFILE '/tmp/cs/data1.txt' #/tmp/cs/data1.txt 数据文件位置
INTO TABLE cs_log #cs_log 要导入数据的表名
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';