MySQL server has gone away

來源:互聯網
上載者:User

出現這種錯誤是因為,mysql server關閉了該串連,如果用戶端程式在預設的8小時內進行任何資料庫操作的話。解決方案有:

1、修改mysql server的my.cnf,通過修改wait_timeout,interactive_timeout,來設定延長逾時時間,但是個人不建議這麼做,這種操作會導致存在很多的資料庫連接存在,影響資料庫的效能;

   設定方法為:

      [mysqld]

      wait_timeout=5
      interactive_timeout = 5

 

       需要兩個變數同時進行設定;

 

 

2、設定資料庫選項,當串連斷開時進行重新串連。

 

       char nvalue = 1;

        if(mysql_options(&mysql, MYSQL_OPT_RECONNECT, (char *)&nvalue))
                printf("mysql_options/r/n");

 

3、執行資料庫操作前,ping一下資料庫,如果資料庫無法串連,則中斷連線,然後再重啟串連。

 

     if(mysql_ping(sqlsock) != 0){    //reconnect failed...Then try connect
                   CloseDB();
 
                  if((sqlsock = mysql_real_connect(&mysql,DBHOST,DBUSER,DBPASSWORD,DBNAME,0,NULL,CLIENT_INTERACTIVE)) == NULL)
                  {
                        fprintf(stderr,"Can't connect to mysql sever! ErrorCode:%s/r/n",mysql_error(&mysql));

                        return -1;
                 }
                  printf("ConnectDB/r/n");
        }

 

          為保險起見,我採用重啟串連之間進行關閉串連;

        對於這種方法,個人建議採用一個線程每隔一定的時間來ping一下, 如果ping不通,則重新進行串連操作。

 

 

4、跟第一種方法類似,也是設定逾時的時間,只是這個逾時時間只是對本串連有效;

           mysql_options(&mysql,MYSQL_INIT_COMMAND,"set interactive_timeout = 15");       
           mysql_options(&mysql,MYSQL_INIT_COMMAND,"set wait_timeout = 15");

 

 

 

 

備忘:當用戶端與伺服器之間的串連斷開的時候(比如拔掉網線),待網路恢複正常後,串連仍然存在,這是tcp的重傳機制在起作用,tcp的重傳時間,本機測試超過了10分鐘的短線,恢複後仍然正常。

     1) 沒有找到設定tcp重傳時間的參數。有知道可以跟帖;

     2) 如何人為斷開資料庫連接的情形,本人也沒有找到好的方法,稍後可能會測試一下如果長時間斷網,如何去恢複資料庫連接(打算ping資料庫的方法來嘗試一下)。

 

 

 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.