mysql5.1關於自動重連的一些變化

rainbowbridg發表於2007-03-09

以前mysql用的是3.23的版本,在呼叫C API的時候,基本不用重連的設定,但是現在使用mysql5.1,發現每天早上連線都會斷掉,感覺很奇怪,仔細查閱文件,發現有2個引數:interactive_timeout,wait_timeout(預設為28800秒),意思是如果28800秒沒有任何操作,連線就自動斷掉,但是奇怪的是為什麼3.23也有這個引數卻沒發生這樣是問題呢?後發現在5.0.3後,預設是超時斷掉後不自動重連,如果需要設定為自動重連,需要在mysql_init()之後,用mysql_options()來設定MYSQL_OPT_RECONNECT為1,這樣就可以自動重連了!!

下面是連線的函式:

int xdbmysql_connect (XdbMysqlBackend *self, const char *host, const char *port,
const char *user, const char *pass, const char *db)
{
int nport;
char value = 1;

if (!port || sscanf(port, "%d", &nport) < 1)
nport = 0;

mysql_init(&(self->mysql));
mysql_options(&(self->mysql), MYSQL_OPT_RECONNECT, (char *)&value);
self->connection = mysql_real_connect(&(self->mysql), host, user, pass,
db, nport, NULL, 0);
if (!xdbmysql_is_connected(self))
return 0;

//add by zld(b)
strcpy(st_ui.host,host);
strcpy(st_ui.port,port);
strcpy(st_ui.usr,user);
strcpy(st_ui.pwd,pass);
strcpy(st_ui.dbn,db);
//add by zld(e)

return 1;
}

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7916042/viewspace-903568/,如需轉載,請註明出處,否則將追究法律責任。

相關文章