我正在办公室运行一台服务器来处理一些文件,并将结果报告给远程MySQL服务器。

文件处理需要一段时间,进程中途死亡,并出现以下错误:

2006, MySQL server has gone away

我听说过MySQL的设置,wait_timeout,但是我需要在我办公室的服务器或远程MySQL服务器上更改它吗?


当前回答

在我的情况下,它是低值的open_files_limit变量,这阻止了mysqld访问数据文件。

我用:

mysql> SHOW VARIABLES LIKE 'open%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| open_files_limit | 1185  |
+------------------+-------+
1 row in set (0.00 sec)

在我将变量改为大值后,我们的服务器再次活跃起来:

[mysqld]
open_files_limit = 100000

其他回答

不太可能的情况是,在客户端和服务器之间有一个防火墙,强制TCP重置到连接中。

我遇到了这个问题,我发现我们公司的F5防火墙被配置为终止空闲超过5分钟的非活动会话。

再说一次,这是不太可能发生的情况。

如果使用XAMPP,有一种更简单的方法。 打开XAMPP控制面板,单击mysql部分中的config按钮。

现在点击my.ini,它将在编辑器中打开。将max_allowed_packet更新为所需的大小。

然后重新启动mysql服务。在Mysql服务上单击stop,再次单击start。等几分钟。

然后再次运行Mysql查询。希望它能起作用。

我在MySQL命令行中使用了以下命令来恢复一个超过7GB的MySQL数据库,它是有效的。

set global max_allowed_packet=268435456;

此错误是由于wait_timeout过期引起的。

去mysql服务器检查它的wait_timeout:

mysql>显示wait_timeout这样的变量 Mysql > set global wait_timeout = 600 # 10分钟或最大等待时间 你需要的

http://sggoyal.blogspot.in/2015/01/2006-mysql-server-has-gone-away.html

我的问题是我为生产连接添加了SSL配置,这破坏了我的本地环境。很简单,但可能会帮助其他人意识到他们的问题。