13

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

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

4 回答 4

7

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

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

于 2011-08-01T07:14:59.800 回答
4

尝试通过调用一个语句导入大文件时出现此seeds.rb错误rake db:seed

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

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


解决方案

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

  1. 添加reconnect: true到数据库规范中database.yml
  2. 读取 SQL 文件并单独执行语句,如下所示:

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

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

于 2013-12-23T03:18:50.523 回答
1

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

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

于 2012-04-20T11:05:43.450 回答
0

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

于 2011-07-24T14:26:04.363 回答