應用程式與資料庫建立連線後,若超過 8 小時未訪問資料庫,連線會被斷開。再次訪問拋出異常:
Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.io.EOFException
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1913)
...
在連線字串加 autoReconnect=true,但這只對 MySQL 4 以前版本有效,最新版無效。
修改 MySQL 啟動參數。預設 timeout 為 28800 秒(8 小時),增加一個 0 即可延長至 80 小時。
啟動命令範例:
mysqld-nt --default-table-type=innodb --interactive_timeout=288000
或在 my.ini(Windows) / my.cnf(Linux) 中增加:
[mysqld]
interactive_timeout = 288000
wait_timeout = 288000
修改後重啟 MySQL 服務生效。