一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - JDBC實現Mysql自動重連機制的方法詳解

JDBC實現Mysql自動重連機制的方法詳解

2020-12-07 11:01dodott Java教程

最近在工作中發現了一個問題,通過查找相關的資料終于解決了,下面這篇文章主要給大家介紹了關于JDBC實現Mysql自動重連機制的相關資料,文中給出多種解決的方法,需要的朋友可以參考借鑒,下面來一起看看吧。

前言

本文主要給大家介紹的是關于JDBC實現Mysql自動重連機制的相關內容,分享出來供大家參考學習,下面來一起看看詳細的介紹:

日志:using the Connector/J connection property 'autoReconnect=true' to avoid this problem

?
1
com.mysql.jdbc.CommunicationsException: The last packet successfully received from the server was58129 seconds ago.The last packet sent successfully to the server was 58129 seconds ago, which is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.

查了一下,原來是MySQL超時設置的問題

如果連接閑置8小時 (8小時內沒有進行數據庫操作), mysql就會自動斷開連接, 要重啟tomcat.

解決辦法:

第一種:如果不用hibernate的話, 則在 connection url中加參數: autoReconnect=true

?
1
jdbc.url=jdbc:mysql://ipaddress:3306/database?autoReconnect=true&autoReconnectForPools=true

第二種:用hibernate的話, 加如下屬性:

?
1
2
3
<property name="connection.autoReconnect">true</property>
<property name="connection.autoReconnectForPools">true</property>
<property name="connection.is-connection-validation-required">true</property>

第三種:要是還用c3p0連接池:

?
1
2
3
4
<property name="hibernate.c3p0.acquire_increment">1</property>
<property name="hibernate.c3p0.idle_test_period">0</property>
<property name="hibernate.c3p0.timeout">0</property>
<property name="hibernate.c3p0.validate">true</property>

第四種:最不好的解決方案

使用Connector/J連接MySQL數據庫,程序運行較長時間后就會報以下錯誤:

Communications link failure,The last packet successfully received from the server was *** millisecond ago.The last packet successfully sent to the server was ***  millisecond ago。

其中錯誤還會提示你修改wait_timeout或是使用Connector/J的autoReconnect屬性避免該錯誤。

后來查了一些資料,才發現遇到這個問題的人還真不少,大部分都是使用連接池方式時才會出現這個問題,短連接應該很難出現這個問題。

這個問題的原因:

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

⑴.按照錯誤的提示,可以在JDBC URL中使用autoReconnect屬性,實際測試時使用了autoReconnect=true& failOverReadOnly=false,不過并未起作用,使用的是5.1版本,可能真像網上所說的只對4之前的版本有效。

⑵.沒辦法,只能修改MySQL的參數了,wait_timeout最大為31536000即1年,在my.cnf中加入:

?
1
2
3
4
5
[mysqld]
 
wait_timeout=31536000
 
interactive_timeout=31536000

重啟生效,需要同時修改這兩個參數。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:http://blog.csdn.net/dodott/article/details/54616333

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产成人手机在线好好热 | chinaspanking调教| 隔壁老王国产在线精品 | 天天做天天爱天天综合网 | 欧美成人精品第一区二区三区 | 校花被拖到野外伦小说 | 双性鞭蒂软汁淋漓 | 我把寡妇日出水好爽 | 无限资源在线观看完整版免费下载 | 成人国产精品一级毛片视频 | 成人国产精品一区二区不卡 | 91啦中文在线观看 | 免费理伦片手机在线播放 | 香蕉国产精品偷在线播放 | 高清在线一区二区 | 日本性爱| 欧美日韩视频在线第一区二区三区 | 日韩精品高清自在线 | 亚洲成人国产精品 | 男女一级簧色带 | 猛h辣h高h文湿校园1v1 | 日韩视频在线精品视频免费观看 | 国产综合视频在线 | 亚洲精品视频在线 | 毛片网站免费观看 | 国内精品免费一区二区三区 | 高清国产激情视频在线观看 | 国产日韩精品一区二区在线观看播放 | 日本免费一二区 | 亚洲高清色图 | 精品日本一区二区 | 国自产拍在线天天更新91 | 冰漪丰满大乳人体图片欣赏 | 久久爽狠狠添AV激情五月 | 亚洲精品视频一区 | 先锋资源久久 | 经典WC女厕所里TV | 色琪琪原网站亚洲香蕉 | 欧美日韩亚毛片免费观看 | 亚洲 欧美 中文字幕 在线 | 91视频完整版 |