應用與資料庫建立連線後,超過 8 小時無訪問,資料庫主動斷開。再次查詢拋出異常:
Communications link failure due to underlying exception: ** BEGIN NESTED EXCEPTION ** java.io.EOFException STACKTRACE: java.io.EOFException at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1913) ...
MySQL 預設 wait_timeout = 28800 秒(8 小時)。超過此時間無活動,服務器關閉連線。舊版常用連線字串加 autoReconnect=true,但 **MySQL 新版已無效**。
啟動參數或配置檔設定:
mysqld-nt --default-table-type=innodb --interactive_timeout=288000
或在 my.ini/my.cnf [mysqld] 區段加入:
wait_timeout = 288000 interactive_timeout = 288000
重啟服務生效。建議設 10 倍(288000 秒 = 80 小時)或更大,視業務需求。
SELECT 1、testOnBorrow),雙重保險。interactive_timeout 針對互動式客戶端(如 mysql 命令列),wait_timeout 針對非互動式(JDBC 連線池),通常同值設定。