Mysql連線超時解決方案1 修改預設超時時間

2021-10-03 06:45:53 字數 1624 閱讀 1627

mysql資料庫一般預設的連線超時time為28800s(即8小時),超過8h,資料庫會斷開這個連線。後台程式出現類似「org.hibernate.exception.jdbcconnectionexception: could not extract resultset」錯誤,或者如下圖所示異常。

在進行大規模的執行緒事務操作時,乙個連線會一直等待執行,這時候如果資料庫的超時時間設定的過短,就可能會出現mysql資料連線自動被釋放,影響後面對資料庫的操作。

當然mysql連線設定的大小,要根據需求場景進行設定,wait_timeout過大也有弊端,其體現就是mysql裡大量的sleep程序無法及時釋放,拖累系統效能,不過也不能把這個指設定的過小,否則你可能會遭遇到「mysql has gone away」之類的問題。

所以需要根據自己專案業務場景,進行適當的設定超時時間。

在mysql命令提示符下執行以下命令即可:

方案1.在mysql命令提示符執行以下命令即可(臨時方法,重啟mysql伺服器會失效,恢復預設值)

set global wait_timeout=259200;

set global interactive_timeout=259200;

方案2.修改jdbc連線url(不推薦)在mysql4.x版本,可新增 autoreconnect=true這個引數,即能解決mysql超時重連問題。但在mysql5以上版本,autoreconnect=true這個設定是無效的;

jdbc:mysql://hostaddress:3306/testdb?autoreconnect=true
方案3.修改mysql的配置檔案(慎用)此方法要謹慎使用,如果這個值設定的太大,將導致空閒連線過多,白白消耗記憶體;如果設定的太小,就失去了mysql超時自動重連的作用。到底需要設定多大,難以界定。

開啟my.ini檔案,新增如下配置:

interactive_timeout=2592000

wait_timeout=2592000

在屬性組 [mysqld] 下面新增引數(配置超時時間為30天)如下:

其實以上三種方案都只是臨時的,並沒有有效地解決mysql超時重連的問題。要徹底解決這個問題,推薦大家閱讀本系列後續兩篇文章:

1、mysql連線超時解決方案2: 配置proxool連線池;

2、mysql超時重連解決方案3: 配置c3p0連線池;

遠端連線mysql解決方案

報錯 1130 host is not allowed to connect to this mysql server 解決方法 1。改表法。可能是你的帳號不允許從遠端登陸,只能在localhost。這個時候只要在localhost的那台電腦,登入mysql後,更改 mysql 資料庫裡的 user...

mysql 解決方案 Mysql解決方案

mysql解決方案 一 centos7安裝mysql5.7 wget rpm uvh mysql80 community release el7 3.noarch.rpm yum repolist all grep mysql 發現預設mysql8.0是預設安裝的,然而我們要安裝的是mysql5.7...

Mysql update執行超時解決方案

問題描述 執行update時,發現時間很長,而且會失敗 步驟 1 在資料庫執行 update play set skip skip 500,run 5.50,jump times jump times 1 where id 388 結果報錯 error code 1205.lock wait tim...