第406行的MySQL错误2006(HY000):MySQL服务器已经消失

时间:2012-01-05 15:15:48

标签: mysql mysqldump

我有一个来自数据库的MYSQL转储我正试图转移到新的数据库服务器。当我尝试导入我的SQL转储时,收到以下错误:

MySQL Error 2006 (HY000) at line 406: MySQL server has gone away

我搜索了问题,大多数人通过更改wait_timeout的值来解决问题。但是,我当前的值设置为28800(8小时),并且在运行导入时错误出现的时间不到8秒。

我也尝试将max_allowed_pa​​cket的值设置为1073741824,但这也无法解决问题。

通过mysql转储,转储中有相当多的blob列,但整体文件大小只有6 MB。

有没有人对这可能是什么问题有任何想法?

3 个答案:

答案 0 :(得分:47)

为了未来搜索者的利益添加此答案,因为它解释了为什么增加数据包大小可以解决问题:

  

情况是,如果客户端发送的SQL语句长于服务器max_allowed_pa​​cket设置,则服务器将断开客户端的连接。来自同一客户端实例的下一个查询将发现'MySQL服务器已经消失'。

     

...但是,如果出现问题,最好让'got packet larger'错误[错误:2020(CR_NET_PACKET_TOO_LARGE)]返回。

摘自并感谢peter_laursen's blog post

在OSX 10.7(Lion)上,我创建了一个文件/etc/my.cnf,其中包含以下内容:

[mysqld]
max_allowed_packet = 12000000

然后停止了mysql服务器:

/usr/local/bin/mysql.server stop

当它自动重启时,我能够执行我的插入。

答案 1 :(得分:6)

在尝试导入130 MB文件时,将max_allowed_pa​​cket增加到12 MB(12000000)解决了我的问题。

更改ini文件或在MySQL Workbench中选择文件/网络(需要重启MySQL)。

如果仍然出现错误,请尝试增加更多(100 MB)。你记得在完成后减少它。

答案 2 :(得分:0)

1)更改MySql配置文件:     #     /etc/mysql/my.cnf

<input type="file" accept="image/*">

2)MySql deamon重启

#section 
#
[mysqld]
#
key_buffer              = 32M
max_allowed_packet      = 32M
thread_stack            = 512K
thread_cache_size       = 64
#

应该解决你的问题。