1、mysql如果長連接而長期沒有對數據庫進行任何操作,在timeout值後,mysql server就會關閉此鏈接,程序執行查詢的時候就會得到一個類似於“MYSQL server has gone away”這樣的錯誤。
在使用mysql_real_connect連接數據庫之後,再使用mysql_options( &mysql, MYSQL_OPT_RECONNECT, … ) 來設置爲自動重連。這樣當mysql連接丟失的時候,使用mysql_ping能夠自動重連數據庫。如果是在mysql 5.1.6之前,那麼則應在每次執行完real_connect 之後執行mysql_options( &mysql, MYSQL_OPT_RECONNECT, … ) ,如果是mysql 5.1.6+,則在connect之前執行一次就夠了。
mysql_options(&m_data,MYSQL_OPT_RECONNECT,"gbk");
if(mysql_real_connect(&m_data,server,username,password,database,port,0,0) == NULL)
mysql_ping(&m_data)//返回值爲0正常,非零值則出錯。
2、在MYSQL的默認設置中,如果一個數據庫連接超過8小時沒有使用(閒置8小時),服務器將斷開這條連接,後續在該連接上進行的查詢操作都將失敗。網絡上對該問題的描述非常多。也提供了相應的解決辦法。我在這裏提一些我自己的看法。
爲超級用戶登錄到MYSQL 輸入show global variables like 'wait_timeout';
現在重新設置該參數,例如我們要將超時時間設置成10個小時,可以輸入:
set global wait_timeout=36000;
3、修改my.ini 配置文件 添加
wait_timeout=1814400
interval_timeout = 1814400
4、mysql參考手冊