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

Posted

技术标签:

【中文标题】第 406 行的 MySQL 错误 2006 (HY000):MySQL 服务器已消失【英文标题】:MySQL Error 2006 (HY000) at line 406: MySQL server has gone away 【发布时间】:2012-02-03 09:55:54 【问题描述】:

我有一个来自数据库的 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 dump,dump中有不少blob列,但整体文件大小只有6MB。

有人知道还有什么问题吗?

【问题讨论】:

作为一种解决方法,我回到源数据库服务器并制作了几个较小的转储文件(一次 5 个表)。然后,我导入了每个较小的转储文件,这让我可以在没有错误消息的情况下完成数据库传输。 【参考方案1】:

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

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

...但如果这是问题所在,当然最好返回“得到更大的数据包”错误 [错误: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

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

【讨论】:

好吧,即使 max_allowed_pa​​cket = 512M 我也遇到了同样的问题 @AbhijitBuchake - 那么这可能不是“数据包太大”问题,而是断开连接的其他原因。很遗憾,我对您没有任何其他建议。 谢谢!我已经阅读并尝试了十几个场景。我已经重新安装了 3 次 mysql。 my.cnf 的上述技巧修复它。我试图通过命令行将一个 50m 的 mysql 数据库添加到 mysql 中。这让我很开心!【参考方案2】:

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

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

如果您仍然收到错误,请尝试增加更多 (100 MB)。完成后记得减少它。

【讨论】:

【参考方案3】:

1) MySql 配置文件的变化: # /etc/mysql/my.cnf

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

2) MySql 守护进程重启

/etc/init.d/mysql restart 

应该可以解决你的问题。

【讨论】:

以上是关于第 406 行的 MySQL 错误 2006 (HY000):MySQL 服务器已消失的主要内容,如果未能解决你的问题,请参考以下文章

MySQL Workbench:查询中的错误(1064):第 1 行的“VISIBLE”附近的语法错误

csv导入错误的Mysql排序规则/类型第1362行的CSV输入中的列计数无效

无法使用 c#“第 1 行的 SQL 语法错误”将数据从 Ms Access 迁移到 MySQL 工作台

我无法将我的 SQL 表从 Adminer 导入 MySQL Workbench 而不会出现错误:第 9 行的错误 1215 (HY000):无法添加外键约束

来自 Python All in One for Dummies 的 Python Web scraper 副本上的 HTTP 错误 406

错误 2006 (HY000): MySQL 服务器已消失