1. 程式人生 > 其它 >Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure問題解決

Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure問題解決

一、今日學習內容

ERROR [com.alibaba.druid.pool.DruidDataSource] - create connection error, url: jdbc:mysql://127.0.0.1:3306/db_local?serverTimezone=UTC&useSSL=false&autoReconnect=true, errorCode 0, state 08001 java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.

這其實就是資料庫沒開啟導致,開啟就可以了

不過,MySQL伺服器預設的“wait_timeout”是28800秒即8小時,意味著如果一個連線的空閒時間超過8個小時,MySQL將自動斷開該連線,而連線池卻認為該連線還是有效的(因為並未校驗連線的有效性),當應用申請使用該連線時,就會導致上面的報錯。

所以最好,我們修改一下這個時間

解決問題步驟
1.mysql5以前的版本可以直接在jdbc連線url的配置中附加上“autoReconnect=true”。

2.將mysql的全域性變數wait_timeout的值修改為最大。檢視mysql5的手冊,發現windows和linux下wait_timeout的最大值分別是24天和365天。

在檔案my.ini的最後增加一行:wait_timeout=1814400。(該檔案,windows下在mysql的安裝目錄下,linux下位置為/etc/my.ini)筆者的目錄為:MySQL\Data\MySQL Server 8.0下

重啟mysql。

具體異常如下:

[2019-04-20 18:05:24.161] [Druid-ConnectionPool-Create-1967852205] ERROR [com.alibaba.druid.pool.DruidDataSource] - create connection error, url: jdbc:mysql://127.0.0.1:3306/db_local?serverTimezone=UTC&useSSL=false&autoReconnect=true, errorCode 0, state 08001
java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:108) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:87) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:61) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:71) at com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:932) at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:857) at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:444) at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:230) at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:226) at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:148) at com.alibaba.druid.filter.stat.StatFilter.connection_connect(StatFilter.java:211) at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:142) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1410) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1464) at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1969) Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure


————————————————
版權宣告:本文為CSDN博主「閉著眼睛寫BUG」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/u013234928/article/details/89431564