MySQL server has gone away

>> 2007/01/26

"MySQL server has gone away."

通常 MySQL C API 回傳這個 error message 的時候都是 MySQL server crash,或是有什麼 nasty 的事情發生了。但是如果 MySQL server 好端端的沒事的話呢?

MySQL C client API,在 5.0.3 以前,會設定一個 reconnect flag,如果被 server timeout 或是 disconnect,那麼在 issue query 以前會自己 reconnect。所以如果你用舊版的程式,在新版的 API (newer than 5.0.3) 上面 compile,那麼可能就會爆了這麼一下;因為新版裡面這個 flag 是設成 0,當 client 被 server disconnect 或是 timeout 的時候,再要下 query 的話,就會發現 server 不見了...

要從 client code 解這個問題的話,5.0.13 以後的 API 版本,可以設定讓他吃MYSQL_OPT_RECONNECT 來解決。

For example,

mysql_init(&mysql);
mysql_options(&mysql, MYSQL_OPT_RECONNECT, "1");
mysql_real_connect("blahblah");


就可以了。這個故事告訴我們... 升級以後,文件一定要記得看 -_-

Reference:
mysql_options()
mysql_real_connect()


0 comments:

最新文章

最新回應

部落格貼紙

  © Free Blogger Templates Autumn Leaves by Ourblogtemplates.com 2008

Back to TOP