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

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

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


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

 

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

查看mysql的timeout

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

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

 

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

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

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

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

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

 

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

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

 

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

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

連接超時以后的查詢

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

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

 

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

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

 

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

解決辦法

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

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

 

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

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

 

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

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

 

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

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

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

網(wǎng)友整理

注冊時間:

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

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(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)動步數(shù)有氧達(dá)人2018-06-03

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

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

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

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定