2011-12-30 66 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