このエラーが時々発生します。私はstackoverflowでいくつかの解決策を読みましたが、それらはrails 2またはmysqlに関するものでした. どんな助けでも大歓迎です。
ActiveRecord::StatementInvalid (Mysql2::Error: MySQL server has gone away
このエラーが時々発生します。私はstackoverflowでいくつかの解決策を読みましたが、それらはrails 2またはmysqlに関するものでした. どんな助けでも大歓迎です。
ActiveRecord::StatementInvalid (Mysql2::Error: MySQL server has gone away
エラーの原因は多数あります。考えられる原因については、以下のページを参照してください。パケットサイズの設定が小さすぎる可能性があります。
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 つの組み合わせで解決しました。
reconnect: true
のデータベース仕様に追加database.yml
次のように、SQL ファイルを読み取り、ステートメントを個別に実行します。
f = File.new('path/to/file.sql')
while statements = f.gets("") do
ActiveRecord::Base.connection.execute(statements)
end
SQL ファイルからいくつかのコメントを削除するように変更する必要がありました。何らかの理由で ActiveRecord がエラーをスローするようになりましたが、それで問題は解決しました。
開発環境で「rake db:reset」コマンドを実行すると、まったく同じ問題が発生します。しかし、「rake db:migrate:reset && rake db:seed」を実行しても、このエラー メッセージは表示されません。
非常に奇妙ですが、これはこの問題にいくつかの光を当てるかもしれません. 私の投稿が少しでも解決につながれば幸いです。
ホストされているサーバーが過負荷になっていて、MySQLサーバーがクエリを実行できない場合があります。ホスティングプロバイダーにパフォーマンス監視ツールについて尋ねるか、この問題について直接伝えてください。このエラーメッセージは、彼らがあなたに答えを与えるのに十分なはずです。