MySQL server has gone away
Posted M_ling
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL server has gone away相关的知识,希望对你有一定的参考价值。
一、mysql server has gone away mysql数据库出现这种问题是一个很不友好的错误提示,需要多方位的考虑,才能定位问题所在。 出现这个问题主要要考虑到下面三点:
1、wait_timeout
wait_timeout 默认是28800,单位秒,即8个小时,除非你改小了,基本上就可以排除这个问题。
2、interactive_timeout
interactive_timeout 默认是28800,单位秒,即8个小时
3、max_allowed_packet
max_allowed_packet 默认是4194304,单位字节B,即默认值是4M,在导入数据的时候,如果文件大于4M了,就会抛出这个错误的。
二、遇到问题事例:Navicat导入mysql提示[ERR] 2006 - MySQL server has gone away
方法一:
找到服务器mysql安装目录下的my.ini(linux系统下为my.cnf)配置文件,加入以下代码:
max_allowed_packet=500M
方法二:
打开navicat的菜单中的tools,选择server monitor,然后在左列选择数据库,右列则点选variable表单项,寻找到max_allowed_packet将其值改大(wait_timeout、interactive_timeout 这两个值根据自身服务情况进行相应修改)。
汉化版在菜单中,工具-->服务器监控-->在左侧数据库连接列表前勾选要操作的数据库连接-->在右侧变量中找到max_allowed_packet将其值改大(wait_timeout、interactive_timeout 这两个值根据自身服务情况进行相应修改)。
注:看到别人对三个参数有设置如下
max_allowed_packet=500M
wait_timeout=288000
interactive_timeout = 288000
三个参数注释如下:
max_allowed_packet 是mysql允许最大的数据包,也就是你发送的请求;此参数的作用是,用来控制其通信缓冲区的最大长度
wait_timeout是等待的最长时间,这个值大家可以自定义,但如果时间太短的话,超时后就会现了MySQL server has gone away #2006错误。
interactive_timeout针对交互式连接
三、interactive_timeout和wait_timeout参数区别
interactive_timeout针对交互式连接,wait_timeout针对非交互式连接。所谓的交互式连接,即在mysql_real_connect()函数中使用了CLIENT_INTERACTIVE选项。
说得直白一点,通过mysql客户端连接数据库是交互式连接,通过jdbc连接数据库是非交互式连接。
interactive_timeout:交互式连接超时时间(mysql工具、mysqldump等)
wait_timeout:非交互式连接超时时间,默认的连接mysql api程序,jdbc连接数据库等
以上是关于MySQL server has gone away的主要内容,如果未能解决你的问题,请参考以下文章
MySQL[Err] [Imp] 2006 - MySQL server has gone away .