您好,登錄后才能下訂單哦!
以前mysql用的是3.23的版本,在調(diào)用C API的時(shí)候,基本不用重連的設(shè)置,但是現(xiàn)在使用mysql5.1,發(fā)現(xiàn)每天早上連接都會(huì)斷掉,感覺(jué)很奇怪,仔細(xì)查閱文檔,發(fā)現(xiàn)有2個(gè)參數(shù):interactive_timeout,wait_timeout(缺省為28800秒),意思是如果28800秒沒(méi)有任何操作,連接就自動(dòng)斷掉,但是奇怪的是為什么3.23也有這個(gè)參數(shù)卻沒(méi)發(fā)生這樣是問(wèn)題呢?后發(fā)現(xiàn)在5.0.3后,默認(rèn)是超時(shí)斷掉后不自動(dòng)重連,如果需要設(shè)置為自動(dòng)重連,需要在mysql_init()之后,用mysql_options()來(lái)設(shè)置MYSQL_OPT_RECONNECT為1,這樣就可以自動(dòng)重連了!!
下面是連接的函數(shù):
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;
}
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。