2011-12-30 52 views
1

當運行一個Web服務,並試圖先停止MySQL的Rails的拋出:有沒有可能在Rails中從MySQL關機救援?

ActiveRecord::StatementInvalid (Mysql::Error: MySQL server has gone away:... 

這是追趕能。但是關機過程後完成它剛剛從公用文件夾拋出500頁,記錄此:

Rendered rescues/_trace (39.0ms) 
Rendered rescues/_request_and_response (1.0ms) 
Rendering rescues/layout (internal_server_error) 
/!\ FAILSAFE /!\ Fri Dec 30 16:59:58 +0200 2011 
Status: 500 Internal Server Error 
Can't connect to MySQL server on 'localhost' (10061) 
c:/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.14/lib/active_record/connection_adapters/mysql_adapter.rb:620:in `real_connect' 
c:/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.14/lib/active_record/connection_adapters/mysql_adapter.rb:620:in `connect' 
c:/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.14/lib/active_record/connection_adapters/mysql_adapter.rb:203:in `initialize' 

問:是否可以處理或搶救這500錯誤,所以我可以有這樣的事情:

rescue_from SomeGlobalError do |ex| 
    respond_to do |format| 
     format.html { ... } 
     format.all { ... } 
    end 
end 

這已在here中突出顯示,但答案是錯誤的。你無法從控制器中解救出這件事情,那個問這個問題的人很傷心:「它沒有事件到達控制器......它在某處失效:active_record」

所以我仍然在尋找解決方案。任何幫助傢伙?

回答

-1

添加到您的config/database.yml

reconnect: true 

你需要將它添加到每個envirnoment!你不能拯救ActiveRecord::StatementInvalid,因爲它不僅因爲它的失去連接或超時它的無效聲明,...

+0

這將如何幫助? – Filip 2011-12-30 15:31:33

+0

它會自動重新連接連接,如果服務器再次可用,應用程序將工作! – davidb 2011-12-30 15:36:04

+0

不錯。但我在問另一件事。當我的Mysql服務關閉時,我需要返回不同類型的響應。當它的http然後它確定返回public/500.html但如果它的JS例如我想呈現:text =>「Mysql消失」,:status => 500或smithng像這樣。有關於此的任何想法? – Filip 2011-12-30 15:38:43