私は postgresから開発したrails 3.0.3アプリケーションのデータベースを切り替えていますので、amazonのrds 。私が を変更する前に、私の開発マシンでmysql2アダプタを使って マシンにmysqlを使ってテストコードを実行していました。私のテストコードでは、あとでまだ得られていないエラー が投げられています。 基本的には、大きなxmlのアップロードを保存するためのモデルがあります。マイ テストコードを作成する行は、次のエラーpostgresからmysqlに奇妙なエラーが発生しました。Mysql2 :: Error:MySQLサーバーがなくなりました
ActiveRecord::StatementInvalid: Mysql2::Error: SAVEPOINT active_record_1 does not exist: ROLLBACK TO SAVEPOINT active_record_1
/Users/conor/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/ active_record/connection_adapters/abstract_adapter.rb:202:in `rescue in log'
/Users/conor/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract_adapter.rb:194:in `log'
/Users/conor/.rvm/gems/ruby-1.9.2-p136/gems/mysql2-0.2.6/lib/ active_record/connection_adapters/mysql2_adapter.rb:314:in `execute'
/Users/conor/.rvm/gems/ruby-1.9.2-p136/gems/mysql2-0.2.6/lib/ active_record/connection_adapters/mysql2_adapter.rb:358:in `rollback_to_savepoint'
/Users/conor/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/ active_record/connection_adapters/abstract/database_statements.rb: 149:in `rescue in transaction'
/Users/conor/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/ active_record/connection_adapters/abstract/database_statements.rb: 127:in `transaction'
/Users/conor/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/ active_record/transactions.rb:204:in `transaction'
/Users/conor/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/ active_record/transactions.rb:287:in `with_transaction_returning_status'
/Users/conor/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/ active_record/transactions.rb:237:in `block in save'
/Users/conor/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/ active_record/transactions.rb:248:in `rollback_active_record_state!'
/Users/conor/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/ active_record/transactions.rb:236:in `save'
....
私はテキストフィールドにファイルの内容を保存されているが投げているこの
test "xml upload for large file" do
file = File.new("test/files/lib/upload_sample.xml")
upload = XmlUpload.create(:xml_contents => contents = file.read)
.....
.....
end
ようになります。私はそれを実現する 私は真剣にs3のファイルを格納するのを見なければならないが、これは私が現時点で持っている の設定です。 postgresのではすべてが 罰金働いたが、MySQLで動作するように物事を得るために私が設定する必要がありました:制限 変数をLONGTEXTではなく、標準のテキスト フィールドを使用したことになります。ファイルが非常に大きくなることができますが、私は小さなファイルを使用してテストするとき 問題はありません
私は完全に間違ってツリーを吠えことができるが、私は 問題は、データベース接続によって引き起こされる可能性があることを疑うはドロップに をベースとしています私は、開発 モードでファイルをアップロードしようとするとエラーが投げ。私はこのエラーをチェックして、何が接続を切断する可能性があるのか分かりません。ファイルは8時間(デフォルトの接続のドロップタイム)で挿入されません。
Mysql2 ::エラー:MySQLサーバーが終了しました離れ:xml_uploads
........
。INSERT INTOマイdatabase.yamlの設定は次の通りです。
test:
adapter: mysql2
encoding: utf8
reconnect: true
database: app_test
username: username
password: password
host: localhost
誰もが問題があると、それは固定 できるか何にとして任意の手掛かりを持っていますか?これに関する助けがあれば大いに感謝します。
コナーにそれを調整する上でいくつかの情報があり、私は、Javaと私と何年か前にこの問題を持っていました問題が何であったかを正しく覚えていない。しかし、私はサーバーを過負荷にしていたことを覚えています(おそらく、トランザクションはサーバーにとって大きすぎます)、そしてそれは "サーバーがなくなった"というメッセージで応答を停止しました。あなたは小さなデータセットでこれを試しましたか?または小さなファイルですか? – Augusto
こんにちはアウグスト、あなたの返事をありがとう。私は小さなファイルでテストを試みましたが、すべてが円滑に実行されますが、アップロードできるデータの種類を代表するテストファイルが失敗します。これらのファイルは大きく(1.5-2.5mb)、何も狂っていません。私は接続がタイムアウトして挿入前に削除されていると思うが、なぜそれがあるのか分からない。 – Conor
mysqlで非常に大きなタイムアウトを設定しようとすると - 詳細はこちらhttp://dev.mysql.com/doc/ refman/5.0/ja/gone-away.html – ajreal