Mysql2 错误 MySQL 服务器已消失

Posted

技术标签:

【中文标题】Mysql2 错误 MySQL 服务器已消失【英文标题】:Mysql2 Error MySQL server has gone away 【发布时间】:2011-10-12 00:42:49 【问题描述】:

我偶尔会收到此错误。我在 *** 中阅读了一些解决方案,但它们是关于 rails 2 或 mysql 的。任何帮助将不胜感激。

ActiveRecord::StatementInvalid (Mysql2::Error: MySQL server has gone away

【问题讨论】:

消息“MySQL 服务器已消失”是否告诉您任何信息?遇到此错误(phpMyAdmnin,控制台)时,您是否尝试过连接到您的 MySQL 服务器? 当我刷新页面时它可以工作。 此错误发生在随机页面上还是在某个特定位置?也许是一些无效的查询有问题? 您使用的是共享主机还是私人服务器? 应用在我们,数据库服务器在欧洲 【参考方案1】:

我在尝试通过调用一个语句通过seeds.rbrake db:seed 导入大文件时遇到此错误:

ActiveRecord::Base.connection.execute(IO.read("path/to/file.sql"))

我不断收到ActiveRecord::StatementInvalid (Mysql2::Error: MySQL server has gone away...


解决方案

我通过两件事的结合解决了这个问题:

    reconnect: true 添加到database.yml 中的数据库规范

    读取SQL文件并单独执行语句,如下:

    f = File.new('path/to/file.sql')
    
    while statements = f.gets("") do
      ActiveRecord::Base.connection.execute(statements)
    end  
    

我不得不修改以从我的 SQL 文件中删除一些 cmets —— 它们使 ActiveRecord 出于某种原因抛出错误,但这解决了我的问题。

【讨论】:

哦,为了表扬,我改编了这篇博文中的解决方案代码(第 2 步):nathan.seedoftruth.net/post/15237050763/…【参考方案2】:

当我在开发环境中运行“rake db:reset”命令时,我遇到了完全相同的问题。但是当我运行“rake db:migrate:reset && rake db:seed”时,我从未看到此错误消息。

虽然很奇怪,但这可能会对这个问题有所启发。如果我的帖子能以某种方式找到解决方案,我会很高兴。

【讨论】:

我在运行 rake db:reset 时遇到了同样的问题。在异常的源代码行之前放置一个ActiveRecord::Base.connection.reconnect! 来修复它。【参考方案3】:

导致错误的原因有很多。请参阅下页了解可能的原因。也许您的数据包大小设置得太小了。

http://dev.mysql.com/doc/refman/5.0/en/gone-away.html

【讨论】:

【参考方案4】:

也许您托管的服务器过载,在某些情况下 MySQL 服务器无法执行查询。向您的托管服务提供商询问性能监控工具,或直接告诉他这个问题。这个错误信息应该足以让他们给你一个答案。

【讨论】:

以上是关于Mysql2 错误 MySQL 服务器已消失的主要内容,如果未能解决你的问题,请参考以下文章

安装迁移期间mysql服务器已消失错误(laravel)

MySQL导入导致“服务器已消失”错误[重复]

SQLAlchemy 错误 MySQL 服务器已消失

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

PHP站点中突然出现“MySQL服务器已消失”错误

间歇性 MySQL 服务器已消失错误