1、首先檢查是否已安裝MySQL服務,如果沒有安裝,則需要安裝MySQL服務。
創新互聯建站專業為企業提供易縣網站建設、易縣做網站、易縣網站設計、易縣網站制作等企業網站建設、網頁設計與制作、易縣企業網站模板建站服務,10多年易縣做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。
2、然后檢查MySQL服務是否已經在系統服務列表中,如果不在則需要手動添加MySQL服務。
3、檢查MySQL的配置文件my.ini是否正確,如果不正確則需要修改配置文件。
4、檢查Windows服務管理器中MySQL服務的狀態是否處于“運行”狀態,如果不是,則需要手動啟動MySQL服務。
拓展:
如果以上步驟都無法解決問題,可以嘗試更新MySQL安裝包,或者重新安裝MySQL服務。如果仍然無法解決,則可以嘗試檢查MySQL的數據庫文件是否損壞,如果損壞則需要進行修復。
用Fsocket獲取數據時能夠控制超時的。
如果用
File_get_contents($url);
可以臨時設定環境變量:
設定默認socket超時時間
ini_set("default_socket_timeout", 3);養成好習慣,使用fsocket獲取數據。
如果使用Curl,也可以在Curl中控制超時時間:
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
PHP中mysql函數是不提供類似mysql超時選項的,但是php.ini的mysql.connect_timeout可設置
; Maximum time (in seconds) for connect timeout. -1 means nolimit
mysql.connect_timeout = 60
也可以在php腳本中調用設置ini_set();
MYSQL_OPT_READ_TIMEOUT 是 MySQL c api 客戶端中用來設置讀取超時時間的參數。在 MySQL 的官方文檔中,該參數的描述是這樣的:
MYSQL_OPT_READ_TIMEOUT (argument type: unsigned int *)The timeout in seconds for each attempt to read from the server. There are retries if necessary, so the total effective timeout value is three times the option value. You can set the value so that a lost connection can be detected earlier than the TCP/IPClose_Wait_Timeout value of 10 minutes.
也就是說在需要的時候,實際的超時時間會是設定值的 3 倍。但是實際測試后發現實際的超時時間和設置的超時時間一致。
而具體什么時候發生三倍超時,在文檔中沒有找到。所以對 MySQL 5.7.20 的源碼進行了一些分析。
使用 GDB 調試代碼找了實際與 mysql server 通信的代碼,如下:
請點擊輸入圖片描述
其中 vio_read() 函數中,使用 recv 和 poll 來讀取報文和做讀取超時。net_should_retry() 函數只有在發生 EINTR 時才會返回 true。從這段代碼來看是符合測試結果的,并沒有對讀取進行三次重試。只有在讀取操作被系統中斷打斷時才會重試,但是這個重試并沒有次數限制。
從上面代碼的分析可以看出,代碼的邏輯和文檔的描述不符。于是在一頓搜索后,找到了一個 MySQL 的 BUG(Bug #31163)。該 BUG 報告了在?MySQL?5.0 中,MySQL c api 讀取的實際超時時間是設置的三倍,與現有文檔描述相符。于是對 MySQL 5.0.96 的代碼又進行分析。
同樣使用 GDB 找到了通信部分的代碼。這次找到了重試三次的代碼,如下:
請點擊輸入圖片描述
這個版本的 MySQL api 的讀寫超時是直接使用的 setsockopt 設置的。第一次循環,在 A 點發生了第一次超時(雖然注釋寫的非阻塞,但是客戶端的連接始終是阻塞模式的)。然后在 B 點將該 socket 設置為阻塞模式,C 點這里重置 retry 次數。由于設置了 alarm 第二次以后的循環會直接進入 D 點的這個分支,并且判斷循環次數。作為客戶端時net-retry_count 始終是 1,所以重試了兩次,共計進行了 3 次 vioread 后從 E 點退出函數。
由上面的分析可知,MySQL 文檔對于該參數的描述已經過時,現在的 MYSQL_OPT_READ_TIMEOUT 并不會出現三倍超時的問題。而 Bug #31163 中的處理結果也是將文檔中該參數的描述更新為實際讀取超時時間是設定時間的三倍。也許是 MySQL 的維護者們在后續版本更新時忘記更新文檔吧。
出現該問題的主要原因是:Mysql server服務器超時,并且關閉了與客戶端的連接導致的。
默認情況下,如果在8小時沒有對mysql進行查詢請求的話,服務器就會自動斷開連接。可以通過修改全局變量 wait_timeout和interactive_timeout兩個變量的值來進行修改。
接著退出mysql命令行后,重載下mysql
再進來看兩個變量都已經更改成功
摘錄自: Mysql server出現“Mysql server has gone away”的錯誤的解決方式
分享文章:mysql超時怎么取消 mysql超時怎么解決
鏈接地址:http://vcdvsql.cn/article32/ddipjsc.html
成都網站建設公司_創新互聯,為您提供全網營銷推廣、App開發、企業建站、商城網站、小程序開發、定制網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯