MYSQL長時間保持連接

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參考手冊

http://dev.mysql.com/doc/refman/5.1/zh/apis.html#c

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章