。INSERT INTO、それは私が、私は以下のようなメッセージを持って、MVCでそれを実行するとするSQLite3 :: BusyException:データベースがロックされている:私はタスクとコードのこの部分を実行すると
task :importGss => :environment do
Gss.delete_all
file = Rails.root + "app/assets/CSVs/gss.csv"
csv_text = File.read(file)
puts csv_text.size
csv = CSV.parse(csv_text, :col_sep => ';', :headers => true)
csv.each do |row|
Gss.create!(row.to_hash)
end
作品:
はActiveRecord :: StatementInvalid(SQLite3の:: BusyException:データベースがロックされている:私はのGSSモデルで機能に上記のコードを入れている
インポートがにルーティングされてGETしてブラウザから起動される を。モデルインポート関数を呼び出すコントローラ インポートが完了すると、レコードの完全なリストがビューに返されます。 csvファイルには4k行があります。 インポートのプロセスに時間がかかり、正確に60秒後にGETが再送されるようです。 インポートをクラッシュさせるこの再送信を回避する方法を教えてもらえますか?
ありがとう:ここでは取引上の
もっと読みます!それは知っている働く。このようなGETを再送するタイムアウトはどうですか?それを避ける方法はありますか? – user3239711
私は気づいていない、私はサーバーがクライアント側を制御しているとは思わない?私は確信していません。今のところアクションは60秒以下かかりますか? – RichardAE
しかし、私はラガーファイルをアップロードする必要がある場合は?私はそれがブラウザから来るかどうか疑問に思います。この場合、データベースがビジー状態であることをテストして衝突を回避できるかどうか – user3239711