表现:调用存储过程查询数据,返回数据量也相当小,几条数据。第一次执行mysql_real_query - mysql_store_result - mysql_free_result,能正常执行并且返回有效数据,第二次在mysql_real_query就返回了失败,错误代码1,错误内容是Error code 2014:Commands out of sync。自己搜索了一些资料,发现大部分提示的是上一个mysql_res*没有被释放掉,于是我又返回到第一次请求结束的地方,尝试再次mysql_free_result同一个结果集,报错,说明我应该是成功释放了第一次的结果集的。而且现在在测试的情况下把代码几乎精简到了几句话,依然要出问题,现在也没有什么思路,希望各位大婶赐教。
下面是精简到最低,还要出错的代码
std::string str="call test_proc (0)";
int iErr = mysql_real_query(&m_con, str.c_str(), str.length());
if (iErr == 0)
{
MYSQL_RES* res = mysql_store_result(&m_con);
if (res)
{
mysql_free_result(res);
}
}
数据库链接的初始化是用的下面这句话
mysql_real_connect(&m_con, host.c_str(), user.c_str(), pwd.c_str(), db_name.c_str(), port, NULL, CLIENT_MULTI_STATEMENTS)