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

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

2006, MySQL server has gone away

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


当前回答

我在Ubuntu桌面上的不同MySQL客户端软件中得到了2006年错误消息。原来我的JDBC驱动程序版本太旧了。

其他回答

在我的情况下,它是低值的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

我在DigitalOcean Ubuntu服务器上也出现了同样的错误。

我尝试改变max_allowed_packet和wait_timeout设置,但他们都没有修复它。

原来我的服务器内存不足。我添加了一个1GB的交换文件,这解决了我的问题。

用free -h检查你的内存,看看这是否是导致它的原因。

这可能是.sql文件大小的问题。

如果您正在使用xampp。打开xampp控制面板->单击MySql配置->打开my.ini。

增加数据包大小。

max_allowed_packet = 2M -> 10M

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

set global max_allowed_packet=268435456;

如果你知道你要离线一段时间,你可以关闭连接,进行处理,重新连接并撰写报告。