我正在办公室运行一台服务器来处理一些文件,并将结果报告给远程MySQL服务器。
文件处理需要一段时间,进程中途死亡,并出现以下错误:
2006, MySQL server has gone away
我听说过MySQL的设置,wait_timeout,但是我需要在我办公室的服务器或远程MySQL服务器上更改它吗?
我正在办公室运行一台服务器来处理一些文件,并将结果报告给远程MySQL服务器。
文件处理需要一段时间,进程中途死亡,并出现以下错误:
2006, MySQL server has gone away
我听说过MySQL的设置,wait_timeout,但是我需要在我办公室的服务器或远程MySQL服务器上更改它吗?
当前回答
我遇到过这种情况很多次,我通常发现答案是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。
其他回答
我遇到过这种情况很多次,我通常发现答案是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。
我也有同样的问题,但改变my.ini/my.cnf文件下[mysqld]的max_allowed_packet。
添加一条线
max_allowed_packet = 500
现在重新启动MySQL服务,一旦你完成。
这可能是.sql文件大小的问题。
如果您正在使用xampp。打开xampp控制面板->单击MySql配置->打开my.ini。
增加数据包大小。
max_allowed_packet = 2M -> 10M
MAMP 5.3,你不会找到my.cnf,添加它们不工作,因为max_allowed_packet存储在变量中。
一种解决方案是:
访问http://localhost/phpmyadmin 转到SQL选项卡 运行SHOW VARIABLES并检查值,如果值小,则运行大值 运行下面的查询,它将max_allowed_packet设置为7gb: 设置全局max_allowed_packet=268435456;
对于某些情况,您可能还需要增加以下值:
set global wait_timeout = 600;
set innodb_log_file_size =268435456;
检查连接是否存在并在需要时重新建立连接可能更容易。
有关这方面的信息,请参阅PHP:mysqli_ping。