2012-06-26 133 views
1

我有類似Resque is returning Mysql2::Error: closed MySQL connection: SHOW FIELDS FROM `users`描述的一個問題,MySQL連接。封閉Rake任務

就我而言,我看到了一個長期運行的Rake任務(3小時以上)時。基本上,任務沿着從csvs導入數據運行,然後突然開始吐出「封閉的MySQL連接」錯誤。這隻發生在我們的遠程MySql的升級環境中,無法在本地重新生成。

所以我的問題是,Rails應用程序(使用相同的連接屬性)爲什麼可以運行幾天都沒有問題,但幾個小時後,我的數據導入任務的炸彈?

回答

1

您的連接超時。這一直髮生在MySQL驅動程序長時間運行的rake任務上。嘗試將連接標誌在你的database.yml

http://guides.rubyonrails.org/2_3_release_notes.html#reconnecting-mysql-connections

基本上只需要添加:

reconnect: true 

我很驚訝,因爲我碰到這一切的時候,這是沒有記錄了。如果不工作,嘗試顯式調用

ActiveRecord::ConnectionAdapters::ConnectionHandler#verify_active_connections!