zoukankan      html  css  js  c++  java
  • 解决error:2014 Commands out of sync; you can't run this command now

    前两天搞mysql的东西,用mysql提供的C API 访问,遇到些问题,在这里分享一下,希望对其他人有帮助。

    mysql C API 调用存储过程,并返回结果集。需要注意几个问题:

    在建立链接的时候要加选项CLIENT_MULTI_STATEMENTS CLIENT_MULTI_RESULTS,以便可以让query执行多个语句。

    mysql_real_connect(mySQL,serverIP,user,password,database,serverPort,NULL,CLIENT_MULTI_STATEMENTS)

    当query时可能产生错误error:2014 Commands out of sync; you can't run this command now

    Mysql文档中说明错误:Commands out of sync

    If you get Commands out of sync; you can't run this command now in your client code, you are calling client functions in the wrong order.

    This can happen, for example, if you are using mysql_use_result() and try to execute a new query before you have called mysql_free_result(). It can also happen if you try to execute two queries that return data without calling mysql_use_result() or mysql_store_result() in between.

    当执行完query后,mysql将结果集放在一个result集中,产生以上问题的原因有两个:

    一是未将MYSQL_RES所指对象释放,即在下次查询时要mysql_free_result();

    二是结果result集不为空,这个原因比较隐蔽。解决方法可以用如下写法:

    do

    {

      /* Process all results */

      printf("total affected rows: %lld", mysql_affected_rows(mysql));

      ...

      if (!(result= mysql_store_result(mysql)))

      {

         printf(stderr, "Got fatal error processing query/n");

         exit(1);

      }

      process_result_set(result); /* client function */

      mysql_free_result(result);

    } while (!mysql_next_result(mysql));

    还有个问题感觉比较奇怪,我调用一个存储过程,存储过程中就一句select

    Create procedure test()

    Begin

    Select * from test ;

    End ;

    用以上方法处理结果集循环会执行两次,开始我只调了一次result= mysql_store_result(mysql)),导致以后执行query2014错误。

  • 相关阅读:
    IntellJ IDEA 使用技巧之组件窗口设置
    记springboot + MP +Hikari动态数据源配置
    manjaro升级后_sogou输入法异常
    python_mysql库安装问题
    通讯录制作(.csv文件转.vcf文件即vcard格式)
    win10_bat _运行python程序
    yield()返回参数函数使用
    python交换两个整型数据的数值
    Mongodb 4.0+安装
    C# winform 记住密码实现代码
  • 原文地址:https://www.cnblogs.com/chenjianhong/p/4145004.html
Copyright © 2011-2022 走看看