The last packet sent successfully to the server was 0 milliseconds ago.
今天在使用JDBC操作mysql時遇到
着實讓人崩潰的信息,花費了一天的時間來解決。
不羅嗦,直接描述解決辦法。
解決方法:
首先一定要確定url和用戶名密碼是否配置正確,看看連接字串,端口是否配置正確
然后再用網上說的URl上綴上autoReconnect=true
jdbc:mysql://localhost:3306/oa?autoReconnect=true
或
編輯mysql目錄里的:my.cnf(windows下為my.ini),
# The TCP/IP Port the MySQL Server will listen on port=3306下面添加
wait_timeout=31536000
interactive_timeout=31536000
原因分析:
(1)大量數據訪問情況下,mysql connection連接有可能失效
(2)長時間不妨問,connection會失效
關於MySQL的wait_timeout連接超時問題報錯解決方案
Mysql服務器默認的“wait_timeout”是8小時【也就是默認的值默認是28800秒】,也就是說一個connection空閑超過8個小時,Mysql將自動斷開該connection,通俗的講就是一個連接在8小時內沒有活動,就會自動斷開該連接。 wait timeout的值可以設定,但最多只能是2147483,不能再大了。也就是約24.85天
所以即使你MySQL通過my.ini 在
# The TCP/IP Port the MySQL Server will listen on port=3306下面添加
# this is myown dinifition for mysql connection timeout wait_timeout=31536000
interactive_timeout=31536000
無論超過最大限度多大的數值,只能被MySQL解析為2147483,2147483天后你的程序該出什么錯還是什么錯,避免不了
更多參考:
http://dev.mysql.com/doc/refman/5.1/zh/database-administration.html#dynamic-system-variables
http://www.blogjava.net/heweiya/archive/2006/01/18/28483.html