执行mysql程序后失去同步

时间:2017-02-13 02:26:46

标签: mysql

我在mysql和linux C的开发过程中遇到了一个问题。 由于程序使用临时params,所以我认为它不会影响以下的sql查询。但是我的测试失败并报告错误:2014年。

我使用的程序是:

delimiter //
drop procedure if exists pbx_r_eid_svcid;
CREATE PROCEDURE `pbx_r_eid_svcid`(IN input_eid varchar(16))
begin

declare exe_result int default -1;
declare out_svcip varchar(64) default "";
declare out_svcport varchar(64) default "";

select exe_result,out_svcip,out_svcport;

end;//
delimiter;

C代码:

#include <mysql/mysql.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
MYSQL *mysql;
int timeout=atoi(argv[1]);
char escape[64] = "";
char orig[64] = "";
char buf[128] = "";
int rc = 0;

MYSQL_RES *res;

mysql = mysql_init(NULL);

mysql_options(mysql, MYSQL_OPT_READ_TIMEOUT, &timeout);
mysql_options(mysql, MYSQL_OPT_WRITE_TIMEOUT, &timeout);

mysql_real_connect(mysql, "127.0.0.1", "root", "123456", "center_distribute", 3306,"/var/run/mysqld/mysqld.sock", CLIENT_FOUND_ROWS | CLIENT_MULTI_STATEMENTS);

snprintf(buf,128, "call pbx_r_eid_svcid('00000002')", "11");

if (mysql_real_query(mysql,buf,strlen(buf)))
{
   int err_no = mysql_errno(mysql);
   fprintf(stderr, "Failed to insert row, Error: %d %s\n", err_no,
           mysql_error(mysql));
}

res = mysql_store_result(mysql);
if(0 == mysql_affected_rows(mysql) || res == NULL)
{
    rc = 6;
    goto end;
}

mysql_free_result(res);


snprintf(buf,128,"select * from enterprise_info;");
/******************************/
/*wrong query return out of sync*/
if (mysql_real_query(mysql,buf,strlen(buf)))
{
   int err_no = mysql_errno(mysql);
   fprintf(stderr, "Failed to insert row, Error: %d %s\n", err_no,
           mysql_error(mysql));
}
res = mysql_store_result(mysql);
if(0 == mysql_affected_rows(mysql) || res == NULL)
{
    rc = 7;
    goto end;
}

mysql_free_result(res);

end:
printf("%d\n",rc);
mysql_close(mysql);
return 0;
}

第二个mysql select将repsonse不同步错误

测试结果: ./mt 5

无法插入行,错误:2014命令不同步;你不能这样做 现在命令

7

任何评论都应该有所帮助。 感谢。

0 个答案:

没有答案