MySQL server has gone away

在 my.ini 中添加以下代码:

wait_timeout = 288000

interactive_timeout = 288000

max_allowed_packet=10M

这样的话就能很好的解决 MySQL server has gone away 问题了。

wait_timeout 是等待的最长时间,这个值大家可以自定义,但如果时间太短的话,超时后就会现了 MySQL server has gone away #2006 错误。

max_allowed_packet 是 mysql 允许最大的数据包,也就是你发送的请求;

max_allowed_packet 参数的作用是,用来控制其通信缓冲区的最大长度。

 

 

查询的结果集超过 max_allowed_packet 也会出现这样的报错。定位方法是打出相关报错的语句。

 

用select * into outfile 的方式导出到文件,查看文件大小是否超过 max_allowed_packet ,如果超过则需要调整参数,或者优化语句。

 

mysql> show global variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name      | Value   |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+
1 row in set (0.00 sec)

修改参数:mysql> set global max_allowed_packet=1024*1024*16;

 

mysql> show global variables like 'max_allowed_packet';
+--------------------+----------+
| Variable_name      | Value    |
+--------------------+----------+
| max_allowed_packet | 16777216 |
+--------------------+----------+
1 row in set (0.00 sec)

 

posted @ 2018-07-19 16:22  落夜loe  阅读(212)  评论(0编辑  收藏  举报