2011-07-24 12 views
10

時々このエラーが発生します。私はstackoverflowでいくつかのソリューションを読んだが、彼らはレール2またはmysqlについてだった。どんな助けもありがとう。Mysql2エラーMySQLサーバーがなくなった

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

「MySQLサーバーがなくなった」というメッセージが表示されますか?このエラー(phpMyAdmnin、console)が発生したときに、あなたのMySQLサーバーに接続しようとしましたか? – Hnatt

+0

私はページをリフレッシュするときに動作します。 – ziCk

+0

このエラーはランダムなページや特定の場所で発生しますか?おそらく無効なクエリに問題がありますか? – Hnatt

答えて

0

ホストされているサーバーが過負荷になっていることがあり、場合によってはMySQLサーバーがクエリを実行できません。パフォーマンス監視ツールについてホスティングプロバイダに問い合わせるか、直接この問題について教えてください。このエラーメッセージは、あなたに答えを与えるのに十分であるはずです。

4

エラーの原因は数多くあります。考えられる原因については、下のページを参照してください。おそらくあなたのパケットサイズは小さすぎると設定されています。

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

1

私が実行したとき、私はまったく同じ問題が発生する「すくいデシベルを:リセット」私の開発環境上でコマンドを。しかし、私は "rake db:migrate:reset & & rake db:seed"を実行すると、このエラーメッセージが表示されることはありません。

非常に奇妙ですが、これによりこの問題が発生する可能性があります。私のポストが何らかの形で解決策につながるなら、私はうれしいです。

+2

同じ問題が 'rake db:reset'を実行しています。例外のソース行の直前に 'ActiveRecord :: Base.connection.reconnect! 'を置くことで、それを修正しました。 – unnu

2

1つのステートメントを呼び出すことによってrake db:seedseeds.rbを通じて大きなファイルをインポートしようとしているときに、私はこのエラーを得た:

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

そして、私はActiveRecord::StatementInvalid (Mysql2::Error: MySQL server has gone away...


SOLUTION

を得る上で保管

私はこれを2つの組み合わせで解決しました:

  1. など、SQLファイルを読むdatabase.yml
  2. にデータベースの仕様にreconnect: trueを追加し、個別の文を実行します。

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

私はからいくつかのコメントを削除するために変更する必要がありました私のSQLファイル - 彼らはActiveRecordを何らかの理由でエラーを投げたが、それが私の問題を解決した。

+0

StackOverflowが 'f = File.new( 'path/to/file')という行をフォーマットしない理由はわかりません。sql ') 'コードのように - モデレータがそれを修正することができれば、それはすばらしいでしょう。 –

+0

ああ、正当な理由があれば、このブログ記事の解決コード(手順2)を修正しました:http://nathan.seedoftruth.net/post/15237050763/rails-3-load-sql-directly –

関連する問題