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

    如下错误:

    分析原因: 前端ajax请求后台,共用同一个链接。

    搜索别人的解决方案:http://blog.csdn.net/grass_ring/article/details/3499402

     用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)),导致以后执行query报2014错误。
     

    最终,我为每个请求,建立一个connection,并且在使用完毕后,就主动释放。

  • 相关阅读:
    【硬件】组装一台多核电脑
    【硬件】组装电脑前的准备工作
    【长知识】设计多核电脑装机方案
    【长知识】认识电脑的硬件组成
    程序员必备基础:如何安全传输存储用户密码?
    二本应届生的大学生活、2020年总结(已上岸百度)
    白日梦的Elasticsearch系列笔记(一)基础篇-- 快手上手ES
    全网最牛X的!!! MySQL两阶段提交串讲
    删库后!除了跑路还能干什么?
    数据库面试简答、30道高频面试题
  • 原文地址:https://www.cnblogs.com/xiami303/p/3412974.html
Copyright © 2011-2022 走看看