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

1 つのステートメントを呼び出しseeds.rbて大きなファイルをインポートしようとしたときに、次のエラーが発生しました。rake db:seed

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

そして、私は得続けましたActiveRecord::StatementInvalid (Mysql2::Error: MySQL server has gone away...


解決

これは、次の 2 つの組み合わせで解決しました。

  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 に答える