第 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_packet 的值设置为 1073741824,但这也没有解决问题。
翻阅mysql dump,dump中有不少blob列,但整体文件大小只有6MB。
有人知道还有什么问题吗?
【问题讨论】:
作为一种解决方法,我回到源数据库服务器并制作了几个较小的转储文件(一次 5 个表)。然后,我导入了每个较小的转储文件,这让我可以在没有错误消息的情况下完成数据库传输。 【参考方案1】:为了将来的搜索者的利益而添加此答案,因为它解释了为什么增加数据包大小可以解决问题:
情况是,如果客户端发送的 SQL 语句长于服务器的 max_allowed_packet 设置,服务器将简单地断开客户端的连接。来自同一客户端实例的下一个查询将发现“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_packet = 512M 我也遇到了同样的问题 @AbhijitBuchake - 那么这可能不是“数据包太大”问题,而是断开连接的其他原因。很遗憾,我对您没有任何其他建议。 谢谢!我已经阅读并尝试了十几个场景。我已经重新安装了 3 次 mysql。 my.cnf 的上述技巧修复它。我试图通过命令行将一个 50m 的 mysql 数据库添加到 mysql 中。这让我很开心!【参考方案2】:将 max_allowed_packet 增加到 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