JDBC數據庫連接本地數據庫的報錯問題:Communications link failure

關於jdbc數據庫編程連接本地數據庫的異常報錯,我找了三天才找到根本原因;現分享給各位菜鳥,少走彎路。

我在做mybatis項目整合數據庫時,運行時報錯:

看報錯原因就是數據庫驅動問題;檢查數據庫連接配置,沒有問題。

於是網上查找資料,答案都大概一樣,我試了下,還是不行。

然後我手寫一個簡單的jdbc數據庫測試本地連接,看看是否連接上:

手寫一個簡單的數據庫連接也是連接不上,總是報錯:Communications link failure;意思是:通信鏈路異常;也就是底層通信異常,然後下面又說the last package.....................;服務器沒有收到數據庫的包。

網上查找資料排查:

第一步:

1,先開mysql,輸入        show global variables like 'wait_timeout';   這句,就會顯示出時間了,

 

mysql show global variables like 'wait_timeout'; 

 

+---------------+---------+ 

 

| Variable_name | Value | 

 

+---------------+---------+ 

 

| wait_timeout | 28800 | 

 

+---------------+---------+ 

 

1 row in set (0.00 sec) 

 

解釋:Mysql服務器默認的“wait_timeout”是8小時,也就是說一個connection空閒超過8個小時,Mysql將自動斷開該connection。這就是問題的所。將會造成上面的異常。

2 set global wait_timeout=604800; 

3 set global interactive_timeout=604800;

當我輸入這些命令後,重新啓動數據庫連接,發現報錯,還是通信鏈路問題。

第二步:排查數據庫的版本號和數據庫安裝包jar包的版本號是否一致:

進入數據庫輸入命令:select version();

查看當前的數據庫版本號;數據庫版本號是8.0.15;jar包:mysql-connection-java-8.0.15-jar

兩個包也沒問題,重新測試,也報同樣的錯誤。

第三步:網上的資料查了還是沒有用,解決不了問題,很惱火,我就靜靜地想問題既然是數據庫通信鏈路異常,又顯示服務器沒有收到任何的數據庫驅動包,就說明文件沒有加載,文件沒有加載就是攔截了或者是找不到,我就把防火牆關閉掉,重新測試;結果是報錯,不是通信鏈路錯誤,心中大喜,哈哈哈,就是數據庫拒絕訪問,就說明數據庫密碼錯誤;我重新進入數據庫設置新的密碼,然後再測試,也報錯,密碼錯誤,由於我之前解決這個問題的時候,設置了很多密碼,導致密碼混淆,於是卸載數據庫,卸載數據庫要輸入命令行(見下圖)。重新下載,安裝。

 

sudo rm /usr/local/mysql 

sudo rm -rf /usr/local/mysql*

sudo rm -rf /Library/StartupItems/MySQLCOM

sudo rm -rf /Library/PreferencePanes/My*

rm -rf ~/Library/PreferencePanes/My*

sudo rm -rf /Library/Receipts/mysql*

sudo rm -rf /Library/Receipts/MySQL*

sudo rm -rf /var/db/receipts/com.mysql.*

安裝的時候密碼設置好,開啓數據庫,然後在jdbc數據庫配置裏面改一下密碼和用戶名;進行測試,沒有報錯。問題解決,如下圖:

看到了成功的喜悅。這坑太深了:根本主要原因是防火牆要關閉。爲什麼要關閉,時間有限後續研究補上。

發佈了8 篇原創文章 · 獲贊 6 · 訪問量 3033
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章