热搜词
发表于 2017-11-13 14:41:28 | 显示全部楼层 |阅读模式

刚把网站搬家,执行批量的MYSQL语句,恢复mysql备份的时候,发现mysql提示:

  • ERROR 2006 (HY000): MySQL server has gone away
  • No connection. Trying to reconnect...
后来检查了没有导入成功的几篇文章,其大小都在1MB以上,会不会是单条记录太大了导致出现ERROR 2006 (HY000): MySQL server has gone away的呢?
查看允许的最大值
登陆MySQL后,使用如下命令查询:
  • mysql> show global variables like 'max_allowed_packet';
输出:
  • +--------------------+---------+
  • | Variable_name      | Value   |
  • +--------------------+---------+
  • | max_allowed_packet | 1048576 |
  • +--------------------+---------+
  • 1 row in set (0.01 sec)
上限是刚好1MB,怪不得报错。
提高packet上限即时生效方法
使用如下命令:
  • mysql> set global max_allowed_packet=1024*1024*16;
可在不重启MySQL的情况下立即生效,但是重启后就会恢复原样。
永久生效方法
编辑/etc/my.cnf,将
  • max_allowed_packet = 1M
修改为
  • max_allowed_packet = 16M
即可。
之后重新导入,就不会产生ERROR 2006 (HY000): MySQL server has gone away错误了。


对应:修改my.cnf中的wait_timeout和interactive_timeout变量
在一些不便修改的情形下,如租用的空间,可以采取sql语句修改,如何做呢?

全部评论1
灰儿 发表于 2017-11-13 14:43:57 | 显示全部楼层
解决方法
所有大于16M的SQL文件都会报这个错误,我们可以直接通过命令后增加--max_allowed_packet=32M解决

或者登录MySQL客户端,修改系统变量:

> ssh mysql
mysql> set GLOBAL max_allowed_packet=32*1024*1024;
我们也可以通过修改MySQL配置my.cnf文件,在最后一行增加max_allowed_packet=32M就可以了

MySQL配置文件的位置:

Windows下 C:\ProgamData\MySQL\MySQL Server5.6
Linux下 /etc/mysql
Mac下通过brew安装 /usr/local/Cellar/mysql/5.6.23
回复

使用道具 举报

回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|管理员之家 ( 苏ICP备2023053177号-2 )

GMT+8, 2024-12-21 20:29 , Processed in 0.157446 second(s), 22 queries .

Powered by Discuz! X3.5

Cpoyright © 2001-2024 Discuz! Team