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

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

2006, MySQL server has gone away

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


当前回答

对我来说是内存问题。

我甚至在拥有12个CPU核心和32 GB RAM的服务器上也遇到了同样的问题。我做了更多的研究,试图释放RAM。下面是我在Ubuntu 14.04上使用的释放RAM的命令:

sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

而且,它修复了一切。我把它设置在cron下,每小时运行一次。

crontab -e

0 * * * * bash /root/ram.sh;

并且,你可以使用这个命令来检查有多少可用的空闲RAM:

free -h

你会得到这样的结果:

             total       used       free     shared    buffers     cached
Mem:           31G        12G        18G        59M       1.9G       973M
-/+ buffers/cache:       9.9G        21G
Swap:         8.0G       368M       7.6G

其他回答

检查连接是否存在并在需要时重新建立连接可能更容易。

有关这方面的信息,请参阅PHP:mysqli_ping。

我遇到过这种情况很多次,我通常发现答案是max_allowed_packet的默认设置非常低。

在/etc/my.cnf(在[mysqld]下)中将它提升到8或16M通常可以修复它。(MySql 5.7的默认值是4194304,也就是4MB。)

[mysqld]
max_allowed_packet=16M

注意:如果该行不存在,只需创建该行

注意:这可以在服务器运行时设置。

注意:在Windows上,您可能需要使用ANSI而不是UTF-8编码保存my.ini或my.cnf文件。

使用set global max_allowed_packet=104857600。这将它设置为100MB。

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

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

增加数据包大小。

max_allowed_packet = 2M -> 10M

在MAMP(非专业版)中我添加了

--max_allowed_packet=268435456

到 ...\MAMP\bin\startMysql.sh

更多细节请点击这里

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

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

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

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