有可能是埠錯誤可以排查下這方便
先給大家簡述一下我的坑吧,(我用的是mysql,至於oracle有沒有這樣的問題,有心的小夥伴們可以測試一下哈),
在自己做個javaweb測試專案的時候,因為買的是雲伺服器,所以資料庫連線的是用ip地址,用IDE開發好後,於是部署到遠端雲伺服器上,這時候我是直接部署上去的,如圖所示,資料庫配置就是這樣的(圖中連線地址是假的,我改過了,這裡僅僅演示)、
過了一段時間後,我通過controller路徑去訪問(剛啟動tomcat後,是可以訪問拿到資料的),過了一段時間後,就開始報Communications link failure 連線錯誤了
不過,他提示的到是還是蠻有“責任心”的,如果仔細看下面的話,它還給出了解決方案。
看到關鍵字後,第一時間當然是網上看看,有沒有遇到類似情況的,於是發現有很多,看來這是應該普遍大家會遇到的坑。然後呢,我就按照網上教程,開始了我的測試之
第一種方法:在jdbcURL上加上了 ?autoReconnect=true&failOverReadOnly=false
使用了之後呢,然後過了一段時間,還是報那個Communications link failure 錯誤,然後繼續探索,然後有帖子就說了,autoReconnect=true 適用的是mysql 4.x版本可以用,如果是5以上就不行,然後就馬上看了一下自己的mysql版本,通過select version();看到自己mysql的是5.5的,
於是就採用第二種方法:在mysql的my.ini裡面加上這兩個引數
wait_timeout=2147483
interactive_timeout=2147483 ,
因為帖子裡說是在預設配置不改變的情況下,如果連續8小時內都沒有訪問資料庫的操作,再次訪問mysql資料庫的時候,mysql資料庫會拒絕訪問,於是那就加上吧
加了之後呢,又開始測,過了一段時間,還是報Communications link failure 錯誤,這下徹底涼了,於是繼續翻看著,
終於在一個默默無聞的帖子裡看到了一個解決方案
第三種方法:把jdbcURl的ip地址連結,改成localhost,
(果然大神們的帖子都是幹練到極致,小弟佩服)於是我就將自己的雲伺服器上的jdbc連線手動改成了localhost連線(開發工具上還是用ip連線,這裡說的是將自己雲伺服器上的專案用localhost連線,所以是可以連線到資料庫的)
然後過了一段時間,發現是可以用的,再也沒有Communications link failure 錯誤了,當然此時的我還是懷疑的,準備長時間不連線,等第二天早上再次連結,發現再也不會報這個錯誤了,至此這個坑終於填好了。
第四種方法:
在mybatis.xml中或者其他xml中加上下面這些配置,
總結
網上很多教程大多數是第一種方法和第二種方法,反正我是都試過了,沒有效果,可能根據mysql版本不同或者其他原因,是有用的,反正我這裡是沒有用的,最終是通過第三種方法(把jdbcURl的ip地址連結,改成localhost),才解決這個坑的。
————————————————
版權宣告:本文為CSDN博主「Architect_csdn」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/Architect_CSDN/article/details/101602453