真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql怎么api接口 mysql api函數(shù)

如何使用mysql的 c API 函數(shù)mysql

MYSQL_OPT_READ_TIMEOUT 是 MySQL c api 客戶端中用來設(shè)置讀取超時時間的參數(shù)。在 MySQL 的官方文檔中,該參數(shù)的描述是這樣的:

創(chuàng)新互聯(lián)是一家從事企業(yè)網(wǎng)站建設(shè)、成都做網(wǎng)站、網(wǎng)站建設(shè)、行業(yè)門戶網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計制作的專業(yè)網(wǎng)絡(luò)公司,擁有經(jīng)驗豐富的網(wǎng)站建設(shè)工程師和網(wǎng)頁設(shè)計人員,具備各種規(guī)模與類型網(wǎng)站建設(shè)的實力,在網(wǎng)站建設(shè)領(lǐng)域樹立了自己獨特的設(shè)計風(fēng)格。自公司成立以來曾獨立設(shè)計制作的站點上千。

MYSQL_OPT_READ_TIMEOUT (argument type: unsigned int *)The timeout in seconds for each attempt to read from the server. There are retries if necessary, so the total effective timeout value is three times the option value. You can set the value so that a lost connection can be detected earlier than the TCP/IPClose_Wait_Timeout value of 10 minutes.

也就是說在需要的時候,實際的超時時間會是設(shè)定值的 3 倍。但是實際測試后發(fā)現(xiàn)實際的超時時間和設(shè)置的超時時間一致。

而具體什么時候發(fā)生三倍超時,在文檔中沒有找到。所以對 MySQL 5.7.20 的源碼進(jìn)行了一些分析。

使用 GDB 調(diào)試代碼找了實際與 mysql server 通信的代碼,如下:

其中 vio_read() 函數(shù)中,使用 recv 和 poll 來讀取報文和做讀取超時。net_should_retry() 函數(shù)只有在發(fā)生 EINTR 時才會返回 true。從這段代碼來看是符合測試結(jié)果的,并沒有對讀取進(jìn)行三次重試。只有在讀取操作被系統(tǒng)中斷打斷時才會重試,但是這個重試并沒有次數(shù)限制。

從上面代碼的分析可以看出,代碼的邏輯和文檔的描述不符。于是在一頓搜索后,找到了一個 MySQL 的 BUG(Bug #31163)。該 BUG 報告了在?MySQL?5.0 中,MySQL c api 讀取的實際超時時間是設(shè)置的三倍,與現(xiàn)有文檔描述相符。于是對 MySQL 5.0.96 的代碼又進(jìn)行分析。

同樣使用 GDB 找到了通信部分的代碼。這次找到了重試三次的代碼,如下:

這個版本的 MySQL api 的讀寫超時是直接使用的 setsockopt 設(shè)置的。第一次循環(huán),在 A 點發(fā)生了第一次超時(雖然注釋寫的非阻塞,但是客戶端的連接始終是阻塞模式的)。然后在 B 點將該 socket 設(shè)置為阻塞模式,C 點這里重置 retry 次數(shù)。由于設(shè)置了 alarm 第二次以后的循環(huán)會直接進(jìn)入 D 點的這個分支,并且判斷循環(huán)次數(shù)。作為客戶端時net-retry_count 始終是 1,所以重試了兩次,共計進(jìn)行了 3 次 vioread 后從 E 點退出函數(shù)。

由上面的分析可知,MySQL 文檔對于該參數(shù)的描述已經(jīng)過時,現(xiàn)在的 MYSQL_OPT_READ_TIMEOUT 并不會出現(xiàn)三倍超時的問題。而 Bug #31163 中的處理結(jié)果也是將文檔中該參數(shù)的描述更新為實際讀取超時時間是設(shè)定時間的三倍。也許是 MySQL 的維護(hù)者們在后續(xù)版本更新時忘記更新文檔吧。

如何將 api接口 導(dǎo)入sql

第一步:打在開始界面中找到mysql

請點擊輸入圖片描述

第二步:雙擊打開mysql軟件。,并輸入密碼。

請點擊輸入圖片描述

第三步:如果sql文件的內(nèi)容中有創(chuàng)建數(shù)據(jù)庫的語句或者你想將表存放在你已有的數(shù)據(jù)庫,在這里就不用創(chuàng)建數(shù)據(jù)庫。

請點擊輸入圖片描述

第四步:輸入“show databases;”就能看到自己創(chuàng)建的數(shù)據(jù)庫。

請點擊輸入圖片描述

第五步:輸入“use 數(shù)據(jù)庫名”,開始使用這個數(shù)據(jù)庫。

請點擊輸入圖片描述

第六步:開始導(dǎo)入sql文件,輸入“source sql文件的路徑”(注意你的文件路徑要是復(fù)制來的,要將"\"全部換成“/”)

請點擊輸入圖片描述

第七步:輸入“show tables”,你就會看到你導(dǎo)入的表了。

請點擊輸入圖片描述

如何將mysql數(shù)據(jù)做成api

或者綁定變量,官網(wǎng)例子:

MYSQL_TIME ts;

MYSQL_BIND bind[3];

MYSQL_STMT *stmt;

strmov(query, "INSERT INTO test_table(date_field, time_field,

timestamp_field) VALUES(?,?,?");

stmt = mysql_stmt_init(mysql);

if (!stmt)

{

fprintf(stderr, " mysql_stmt_init(), out of memory\n");

exit(0);

}

if (mysql_stmt_prepare(mysql, query, strlen(query)))

{

fprintf(stderr, "\n mysql_stmt_prepare(), INSERT failed");

fprintf(stderr, "\n %s", mysql_stmt_error(stmt));

exit(0);

}

/* set up input buffers for all 3 parameters */

bind[0].buffer_type= MYSQL_TYPE_DATE;

bind[0].buffer= (char *)ts;

bind[0].is_null= 0;

bind[0].length= 0;

...

bind[1]= bind[2]= bind[0];

...

mysql_stmt_bind_param(stmt, bind);

/* supply the data to be sent in the ts structure */

ts.year= 2002;

ts.month= 02;

ts.day= 03;

ts.hour= 10;

ts.minute= 45;

ts.second= 20;

mysql_stmt_execute(stmt);


分享題目:mysql怎么api接口 mysql api函數(shù)
當(dāng)前路徑:http://weahome.cn/article/hpgoih.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部