[英]What happens to MySQL connection when internet connection is lost?
我的應用程序服務器已連接到MySQL數據庫。 此連接為24/7開放。
可以說我的互聯網崩潰了,或者我要阻止3306端口。
JDBC會拋出錯誤嗎? 如果沒有,我應該如何處理此類問題?
我之所以這樣問,是因為在某些情況下,MySQL連接隨機停止工作,但是沒有關閉,這導致客戶端超時。
您將獲得MySQLNonTransientConnectionException
或CommunicationsException
。 通常,為了程序安全,您要么想要:
根據需要打開/關閉連接
關閉連接后重新打開
我個人推薦前者,尤其是當數據庫是用戶指定的(某些mysql設置有連接超時)時。
編輯 :
我似乎忘了提到每個@ThorbjørnRavnAndersen的連接池,但這也是一個可行的解決方案。 我個人不這樣做,而是對每個線程操作使用可實例化的SQL連接。
就個人而言,我將所有數據庫調用都放入try / catch塊中,因為總有可能出現問題。 您將需要在catch塊中設置一些默認值,並且如果由於某種原因它碰巧落在這些默認值上,請向最終用戶顯示某種(理想情況下)錯誤消息。
不能總是保證運行SQL查詢不會拉回任何類型的結果...任何數目的事情都可能出錯-服務器可能已關閉,連接可能已飽和,以至於無法將結果拉回服務器。及時地,它也可能位於各種備份的死胡同中。...這些事情必須始終考慮在內,這就是為什么我建議采用上述方式進行備份的原因。
最后,要回答您的問題,是的,在所有這些情況下,JDBC實際上都會引發錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.