日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747


解決mysql服務(wù)器在無操作超時(shí)主動(dòng)斷開連接的問題

 

我們?cè)谑褂肕ySQL服務(wù)的時(shí)候,正常情況下,mysql的設(shè)置的timeout是8個(gè)小時(shí)(28800秒),也就是說,如果一個(gè)連接8個(gè)小時(shí)都沒有操作,那么mysql會(huì)主動(dòng)的斷開連接,當(dāng)這個(gè)連接再次嘗試查詢的時(shí)候就會(huì)報(bào)個(gè)"MySQL server has gone away"的誤,但是有時(shí)候,由于mysql服務(wù)器那邊做了一些設(shè)置,很多情況下會(huì)縮短這個(gè)連接timeout時(shí)長(zhǎng)以保證更多的連接可用。有時(shí)候設(shè)置得比較變態(tài),很短,30秒,這樣就需要客戶端這邊做一些操作來保證不要讓mysql主動(dòng)來斷開。

查看mysql的timeout

使用客戶端工具或者M(jìn)ysql命令行工具輸入show global variables like '%timeout%';就會(huì)顯示與timeout相關(guān)的屬性,這里我用Docker模擬了一個(gè)測(cè)試環(huán)境。

解決mysql服務(wù)器在無操作超時(shí)主動(dòng)斷開連接的問題

 

wait_timeout:服務(wù)器關(guān)閉非交互連接之前等待活動(dòng)的秒數(shù),就是你在你的項(xiàng)目中進(jìn)行程序調(diào)用

interactive_timeout: 服務(wù)器關(guān)閉交互式連接前等待活動(dòng)的秒數(shù),就是你在你的本機(jī)上打開mysql的客戶端,比如cmd

使用pymysql進(jìn)行查詢

我在數(shù)據(jù)庫里隨便創(chuàng)建了一個(gè)表,插入兩條數(shù)據(jù)

解決mysql服務(wù)器在無操作超時(shí)主動(dòng)斷開連接的問題

 

我使用pymysql這個(gè)庫對(duì)其進(jìn)行查詢操作,很簡(jiǎn)單

解決mysql服務(wù)器在無操作超時(shí)主動(dòng)斷開連接的問題

 

可以正確的得到結(jié)果

(1, 'yang', 18)
(2, 'fan', 16)

連接超時(shí)以后的查詢

上面可以正常得到結(jié)果是由于當(dāng)創(chuàng)建好一個(gè)連接以后,就立刻進(jìn)行了查詢,此時(shí)還沒有超過它的超時(shí)時(shí)間,如果我sleep一段時(shí)間,看看什么效果。

解決mysql服務(wù)器在無操作超時(shí)主動(dòng)斷開連接的問題

 

這里進(jìn)行了兩次查詢,因?yàn)槲野裮ysql的wait_timeout設(shè)置了30秒,所以我在第一次查詢之后停了31秒,目的讓mysql服務(wù)主動(dòng)的和我剛才創(chuàng)建的連接斷開,得到的結(jié)果是

解決mysql服務(wù)器在無操作超時(shí)主動(dòng)斷開連接的問題

 

可以看到在停了31秒鐘以后,再次使用該連接進(jìn)行查詢將拋出2013, 'Lost connection to MySQL server during query'錯(cuò)誤。

解決辦法

解決的方法有兩種,既然這里的超時(shí)是由于在規(guī)定時(shí)間內(nèi)沒有任何操作導(dǎo)致mysql主動(dòng)的將連接關(guān)閉,pymysql的connection對(duì)象有一個(gè)ping()方法,可以檢查連接是否有效,在每次執(zhí)行查詢操作之前先執(zhí)行一下ping()方法,該方法默認(rèn)的有個(gè)reconnect參數(shù),默認(rèn)是True,如果失去連接了會(huì)重連。

解決mysql服務(wù)器在無操作超時(shí)主動(dòng)斷開連接的問題

 

我曾嘗試使用另外一個(gè)線程不停來執(zhí)行ping()操作,但是當(dāng)我這樣做以后連接就會(huì)丟失,之后的操作就不能進(jìn)行了。這個(gè)問題我再研究研究。

解決mysql服務(wù)器在無操作超時(shí)主動(dòng)斷開連接的問題

 

還有一種方法是使用連接池,連接池中保持著指定數(shù)量的可用連接,每次重新獲取一個(gè)有效的連接進(jìn)行查詢操作,pymysql本身不具有連接池功能,需要借住DBUtils

解決mysql服務(wù)器在無操作超時(shí)主動(dòng)斷開連接的問題

 

這種方式雖然可以正確的獲取結(jié)果,但是實(shí)際的項(xiàng)目中并不會(huì)這么使用,而是在執(zhí)行完查詢語句以后要將connection關(guān)閉,注意這里的關(guān)閉并不是真正的關(guān)閉,而只是將連接返回給連接池讓其他人使用.

解決mysql服務(wù)器在無操作超時(shí)主動(dòng)斷開連接的問題

分享到:
標(biāo)簽:斷開 連接 mysql
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定