Hibernate連線Mysql的8小時問題

2021-09-02 02:50:46 字數 1238 閱讀 2382

這個問題估計是用mysql建立**都會碰到的。

每天早上起來開啟網頁, 就會看到這個問題。。

原因是mysql有乙個time_out全域性值, 這個值是28800, 也就是28800秒,正好是8小時。8個小時之後會斷開連線, 然後jdbc的connection就需要重新連線才行。

在mysql中執行:show global variables like 'wait_timeout';就可以看到該數值。

[size=large][b]問題重現[/b][/size]

首先我們可以修改一下mysql的配置檔案,來重現一下這個錯誤。

[mysqld]

wait_timeout=20

interactive_timeout=20

這次開啟網頁,只要過20秒, 重新整理請求資料庫的頁面,就會看到這個錯誤了。

[color=red] could not open hibernate session for transaction; nested exception is org.hibernate.transactionexception: jdbc begin transaction failed:

caused by:

org.springframework.transaction.cannotcreatetransactionexception: could not open hibernate session for transaction; nested exception is org.hibernate.transactionexception: jdbc begin transaction failed: [/color]

再次重新整理頁面就能開啟。

[size=large][b]解決方案[/b][/size]

此方案針對dbcp.

[url]

validationquery = "select 1"  

testwhileidle = "true"

timebetweenevictionrunsmillis = "10"

minevictableidletimemillis = "10"

testonborrow = "true"/>

這裡設定為10, 也就是mysql連線過期的時間的一半。

這樣就會在mysql連線過期之前重新獲取連線。

具體部署的時候, 改為小於28800的值就行了。

Python基礎 Python連線MySQL

什麼是 pymysql?pymysql 是在 python3.x 版本中用於連線 mysql 伺服器的乙個庫,python2中則使用mysqldb。pymysql 遵循 python 資料庫 api v2.0 規範,幷包含了 pure python mysql 客戶端庫。pymysql 安裝 在使用...

Windows上Python連線MySQL資料庫

python連線mysql資料庫示例 usr bin python import mysqldb conn mysqldb.connection 127.0.0.1 root root test cur conn.cursor cur.execute insert into testok id va...

phpMyAdmim和Yii 連線Mysql報錯。

之前phpmyadmim和yii連線mysql都好著的。某天,同一時候出現例如以下報錯 1 linux下phpmyadmin 出現 缺少 mysqli 擴充套件,請檢查 php 配置。2 yii 出現cdbconnection failed to open the db connection cou...