因工作需要,需要导入一个100M左右的sql文件到MySQL数据库
导入的过程中出现ERROR 2006 MySQL server has gone away
错误,数据导入失败。
是因为sql文件过大,超过了MySQL预设的最大允许值。
**解决方法:
**查看资料,找到设置允许导入的sql大小的参数: max_allowed_packet
, 官方解释是适当增大 max_allowed_packet
参数可以使client端到server端传递大数据时,系统能够分配更多的扩展内存来处理。查看MySQL max_allowed_packet
的值
mysql> show global variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name | Value |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+
可以看到是1M左右,然后调大为128M(1024*1024*128)
mysql> set global max_allowed_packet=134217728;
Query OK, 0 rows affected (0.00 sec)
mysql> show global variables like 'max_allowed_packet';
+-------------------+-----------+
| Variable_name | Value |
+-------------------+-----------+
| max_allowed_packet| 134217728 |
+-------------------+-----------+
1 row in set (0.00 sec)
修改后执行导入,一切正常,解决问题。
注意: 使用set global
命令修改 max_allowed_packet
的值,重启MySQL后会失效,还原为默认值。如果想重启后不还原,可以打开 my.cnf 文件,修改 max_allowed_packet = 128M
即可。
本文标题:mysql导入大批量数据出现MySQL server has gone away的解决方法
文章作者:layjoy
原始链接:http://layjoy.space/2016/12/21/mysql-1/