1. 程式人生 > >java工程連線遠端MySQL資料庫報錯:Communications link failure due to underlying exception

java工程連線遠端MySQL資料庫報錯:Communications link failure due to underlying exception

在開發專案工程時,工程之前都是連線到區域網的測試資料庫,執行沒有問題。但是由於需要將專案部署到外網的伺服器上,同時mysql資料庫也是搭建在外網的伺服器上,

當進行本地開發時,由於電腦是連線在本地的區域網內,需要連線到外網的資料庫上,於是就遇到了問題:

com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

com.mysql.jdbc.CommunicationsException
MESSAGE: Communications link failure due to underlying exception:  ** BEGIN NESTED EXCEPTION **

java.net.SocketException
MESSAGE: Connection reset

STACKTRACE:java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:113)
at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:160)
at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:188)
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1910)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2304)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2803)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3170)
at com.mysql.jdbc.Connection.configureClientCharacterSet(Connection.java:2436)
at com.mysql.jdbc.Connection.initializePropsFromServer(Connection.java:3913)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2683)
at com.mysql.jdbc.Connection.<init>(Connection.java:1531)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)


……** END NESTED EXCEPTION **

Last packet sent to the server was 203 ms ago.

STACKTRACE:

從錯誤可以看出,應該是資料庫連線問題,於是各種谷歌、百度,終於解決問題:

1.首先要確保你能連線上遠端資料庫:如果遠端伺服器所在的電腦連線了路由器或是互動機則需要進行相應的埠對映

2.資料庫連線測試沒有問題後,找到mysql路徑下的my.ini檔案,然後再在[mysqld]下新增

wait_time=172800

interactive-timeout=172800

3.重啟下mysql服務