2009-06-20 110 views
1

營救我有塊像這樣:無法從「失去的連接到MySQL服務器」的錯誤

begin 
     # some SQL request 
rescue Mysql::Error => e 
     logputs "Mysql::Error occurred, retrying in 10s: #{e.message}" 
     sleep 10 
     retry 
end 

但是,當一個錯誤「到MySQL服務器失去連接」發生後,該塊沒能抓住它並重試(MySQL服務器重新啓動)。任何想法如何我可以正確捕捉這個異常?

謝謝!

回答

0

您確定您正在拯救正確類型的異常嗎?

嘗試使用下面的代碼:

rescue StandardError => e 
    puts e 

應該輸出被提升,更重要的是你將能夠看到特定類型的任何異常。然後,您可以調整您的救援聲明以更具體。

+0

謝謝。看起來我正在拯救正確的類型,因爲這是錯誤: /mnt/app/releases/20090620000135/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb:212:in`log': Mysql ::錯誤:在查詢期間與MySQL服務器失去連接:...(ActiveRecord :: StatementInvalid) – ambivalence 2009-06-20 23:42:03

1

從你的評論看來,發生的事情是Mysql :: Error異常正在被拋出,但後來被ActiveRecord捕獲,然後拋出一個ActiveRecord :: StatementInvalid異常(在這種情況下這不是很有幫助的行爲! )。

我想說改變你的救援趕上AR :: StatementInvalid異常,看看有什麼爲你做。

相關問題