所以我正在构建一个连接到mySQL数据库的C程序。一切都很完美。然后,为了节省查询数量,我决定一次执行10个语句。我在连接中设置了“CLIENT_MULTI_STATEMENTS”标志,并用分号分隔我的语句。
当我执行第一批10个语句时,它成功并且mysql_real_query()返回0.
当我尝试第二批时,它返回“1”并且不起作用。我无处可以找到这个“1”错误代码的含义,所以我希望有人可能会遇到这个问题。
请注意,这些都是UPDATE语句,因此我不需要结果集,只需要几次直接调用mysql_real_query()。
答案 0 :(得分:2)
这些准备好的陈述?如果是这种情况,则无法使用CLIENT_MULTI_STATEMENTS。
另外,请注意(来自http://dev.mysql.com/doc/refman/5.5/en/c-api-multiple-queries.html):
处理后的结果 第一个声明,有必要 检查是否存在更多结果 如果是的话,依次处理它们。支持 多结果处理,C API 包括mysql_more_results()和 mysql_next_result()函数。这些 函数在a的末尾使用 循环,只要更多迭代 结果可用。没有 以这种方式处理结果可能会导致 在与服务器的连接中断。
无论您是否关心这些值,您都必须遍历所有结果。
答案 1 :(得分:2)
从文档中不清楚是否返回了此函数可能导致的错误,但是应该可以使用mysql_error()获取实际错误。
我的猜测是,无论你是否对它们感兴趣,你仍然必须遍历结果集。