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

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

2006, MySQL server has gone away

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


当前回答

这通常表示MySQL服务器连接问题或超时。 通常可以通过更改my.cnf或类似文件中的wait_timeout和max_allowed_packet来解决。

我建议以下几点:

Wait_timeout = 28800

max_allowed_packet = 8M

其他回答

我也遇到了这个错误。但是,即使增加了max_allowed_packet或my.cnf中的任何值,错误仍然存在。

我所做的是对我的数据库进行故障排除:

我检查了错误持续存在的表 然后我检查了每一行 有些行可以读取,有些行错误只会显示 似乎这些行中存在导致此错误的值 但是,即使只选择主列,错误仍然会出现(SELECT primary_id FROM table)

我想到的解决方案是重新导入数据库。好在我有这个数据库的备份。但是我只是删除了有问题的表,然后导入了这个表的备份。这解决了我的问题。


我对这个问题的看法是:

始终有数据库备份。手动或通过CRON作业 我注意到在受影响的行中有一些特殊字符。因此,当我恢复该表时,我立即将该表的排序规则从latin1_swedish_ci更改为utf8_general_ci 在我的数据库工作正常之前,我的系统突然遇到这个问题。也许这也与我们的主机提供商升级MySQL数据库有关。所以经常备份是必须的!

对于使用XAMPP的用户,在C:\ XAMPP \mysql\bin\my.ini中有2个max_allowed_packet参数。

取消my.ini/my.cnf中下面的ligne的注释,这将把你的大文件分割成小部分

# binary logging format - mixed recommended
# binlog_format=mixed

TO

# binary logging format - mixed recommended
binlog_format=mixed

这通常表示MySQL服务器连接问题或超时。 通常可以通过更改my.cnf或类似文件中的wait_timeout和max_allowed_packet来解决。

我建议以下几点:

Wait_timeout = 28800

max_allowed_packet = 8M

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;