應用程序和數(shù)據(jù)庫建立連接,如果超過
wait_timeout (默認28000秒8小時) 應用程序不去訪問數(shù)據(jù)庫,連接一直處于空閑狀態(tài),那么
MySQL就會自動關(guān)閉該連接 ,
如果再在該連接上執(zhí)行查詢操作,就會發(fā)生MySQL server has gone away錯誤。
wait_timeout
服務器在關(guān)閉連接之前在一個連接上等待行動的秒數(shù),默認數(shù)值是28800,即如果沒有事情發(fā)生,服務器在 8個小時后關(guān)閉連接。
嘗試解決辦法:
<1>.這是由于超時時間 wait_timeout 過短導致,所以修改它的值即可。打開MySQL安裝目錄下的 mysql.ini,在文件中添加一行配置項 wait_timeout=1000000 即可。(默認沒有此選項,需要手動的添加)
該方法可行。
<2>.在代碼中設置自動重連選項,
m_connection.set_option( new mysqlpp::ReconnectOption(true) );
然后在發(fā)生 MySQL server has gone away錯誤 的時候 調(diào)用 Connection::ping()方法,該函數(shù)會檢查對服務器的連接是否正在工作,必要時重新連接,但經(jīng)過測試后發(fā)現(xiàn),這種方法不起作用。
posted on 2009-05-08 17:54
李陽 閱讀(3700)
評論(0) 編輯 收藏 引用