如果你使用MySQL時(shí)經(jīng)常會(huì)遇到“8小時(shí)斷開”這個(gè)問題,那么這篇文章適合你。
在MySQL中,為了避免某些連接長(zhǎng)時(shí)間空閑等待,MySQL服務(wù)器會(huì)自動(dòng)將一些連接斷開。這個(gè)時(shí)間默認(rèn)是8小時(shí),在MySQL中稱為“wait_timeout”。
如果你的程序在8小時(shí)內(nèi)沒有使用連接,那么這個(gè)連接就會(huì)被自動(dòng)斷開。如果你在此之后再次使用這個(gè)連接,就會(huì)出現(xiàn)問題。
為了解決這個(gè)問題,你可以通過修改MySQL配置文件的方式來解決。在配置文件中找到“wait_timeout”選項(xiàng),修改它的值為你想要的數(shù)值即可。例如,如果你想要將該時(shí)間改為1小時(shí),可以將它修改為3600。
修改完畢后,一定不要忘記重啟MySQL服務(wù),否則配置不會(huì)生效。
# 修改wait_timeout時(shí)間為1小時(shí) wait_timeout = 3600
另外,如果你使用的是PHP,在執(zhí)行完SQL語句后,要記得用mysql_ping函數(shù)來判斷連接是否還存活,如果已經(jīng)關(guān)閉,就重新連接。
// 執(zhí)行SQL語句 $result = mysql_query($sql); // 判斷連接是否還存活 if (!mysql_ping()) { // 關(guān)閉連接 mysql_close(); // 重新連接 $link = mysql_connect(); mysql_select_db($database, $link); }
總之,解決MySQL8小時(shí)斷開問題的關(guān)鍵在于:修改配置文件,重啟MySQL服務(wù),以及在程序中判斷連接是否還存活并及時(shí)重連。