Mysql連接無(wú)效(invalid connection)問(wèn)題及解決
Mysql連接無(wú)效invalid connection
一般連接數(shù)據(jù)庫(kù)的代碼庫(kù)都有實(shí)現(xiàn)連接池,如golang語(yǔ)言database/sql庫(kù),其中SetConnMaxLifetime(d time.Duration)是用來(lái)設(shè)置連接池里每條連接關(guān)閉的時(shí)間,當(dāng)d <= 0時(shí),連接池里的連接永久重用,即永遠(yuǎn)都在連接池里,拿來(lái)就用,不管此連接是否真的有效(這里有問(wèn)題,下面講)。
當(dāng)d > 0時(shí),到了時(shí)間d才會(huì)關(guān)閉連接,把連接移出連接池,但這并不是時(shí)間一到就關(guān)閉,因?yàn)楫?dāng)連接還在使用時(shí)會(huì)等連接完成之后,等下一個(gè)清理連接周期(周期為d)時(shí)會(huì)關(guān)閉連接,移出連接池。
Mysql為了防止空閑連接過(guò)多,超過(guò)了參數(shù)mysql_connection之后會(huì)拒絕新連接,mysql會(huì)自動(dòng)關(guān)閉空閉連接超過(guò)wait_timeout參數(shù)的時(shí)間,會(huì)關(guān)閉使用中超過(guò)interactive_timeout參數(shù)的連接。
由于mysql會(huì)自動(dòng)關(guān)閉超時(shí)連接,所以database/sql的SetConnMaxLifetime()不能設(shè)置為永久有效,要不然連接已經(jīng)被mysql關(guān)閉了,但還是拿著失效的連接使用就會(huì)報(bào)invalid connection。
解決的方案
SetConnMaxLifetime()設(shè)置的時(shí)間小于wait_timeout就行,一般建議wait_timeout/2。
Mysql遠(yuǎn)程連接不生效
記錄一下,一般這種情況都是設(shè)置 mysql 表中對(duì)應(yīng) root 用戶(hù)的 Host 從 localhost 改為 %,但是怎么弄都不生效,沒(méi)辦法只能看看 mysql 配置文件 mysqld.cnf
里面找到了一項(xiàng)內(nèi)容如下圖:

把上面箭頭所指處注釋后一試,還真是這個(gè),不知道這個(gè)什么時(shí)候設(shè)置的,太無(wú)語(yǔ)了。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
mysql LOAD語(yǔ)句批量錄入數(shù)據(jù)
本章的前面討論如何使用SQL向一個(gè)表中插入數(shù)據(jù)。但是,如果你需要向一個(gè)表中添加許多條記錄,使用SQL語(yǔ)句輸入數(shù)據(jù)是很不方便的。2010-03-03
win2008 R2服務(wù)器下修改MySQL 5.5數(shù)據(jù)庫(kù)data目錄的方法
這篇文章主要介紹了win2008 R2服務(wù)器下修改MySQL 5.5數(shù)據(jù)庫(kù)data目錄的方法,需要的朋友可以參考下2016-04-04
MySQL提示表不存在的解決error:1146:Table doesn‘t exist的原因和解決
在使用MySQL的過(guò)程中,有時(shí)會(huì)遇到“Table doesn't exist”(表不存在)的錯(cuò)誤,錯(cuò)誤代碼通常為1146,這個(gè)問(wèn)題可能由多種原因引起,本文將幫助你診斷和解決這個(gè)問(wèn)題,如果遇到同樣問(wèn)題的小伙伴跟著小編一起來(lái)看看吧2024-12-12
mysql時(shí)間是varchar類(lèi)型進(jìn)行比較
本文主要介紹了mysql時(shí)間是varchar類(lèi)型進(jìn)行比較,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
解說(shuō)mysql之binlog日志以及利用binlog日志恢復(fù)數(shù)據(jù)的方法
下面小編就為大家?guī)?lái)一篇解說(shuō)mysql之binlog日志以及利用binlog日志恢復(fù)數(shù)據(jù)的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03
SpringBoot連接MySQL獲取數(shù)據(jù)寫(xiě)后端接口的操作方法
今天通過(guò)本文給大家介紹SpringBoot連接MySQL獲取數(shù)據(jù)寫(xiě)后端接口的操作方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-11-11

