CR_COMMANDS_OUT_OF_SYNC 錯誤

CR_COMMANDS_OUT_OF_SYNC


      今天寫一個mysql的gtest測例,大致的意思是先插入幾條然後select出來然後drop test,結果出現了這個錯誤。如果用函數mysql_error()輸出會產生
     Commands out of sync; you can't run this command now錯誤消息。 出錯代碼如下     

EXPECT_EQ(0, mysql_query(mysql, SELECT_SQL1));                                                                                                      
  //mysql_free_result(mysql_store_result(mysql));
/* Clean job */ 
EXPECT_EQ(0, mysql_query(mysql, DROP_TEST_TABLE)); 
mysql_close(mysql);




     
      註釋掉的第二行是改好後不會出現這個問題的代碼。官方文檔有這麼一句話
       
After invoking mysql_query() or mysql_real_query(), you must call mysql_store_result() ormysql_use_result() for every statement that successfully produces a result set (SELECTSHOWDESCRIBE,EXPLAINCHECK TABLE, and so forth). You must also call mysql_free_result() after you are done with the result set.
        
       所以這個錯誤是由於在執行select之後,沒有處理select操作產生的結果集引起的。因此文檔中說在調用mysql_query()或者mysql_real_query()之後 ,必須調用mysql_store_result()或者mysql_user_result(),因此清理掉產生的結果集即可。
        
mysql_free_result(mysql_store_result(mysql));


參考

1. http://blog.sina.com.cn/s/blog_4e45516601000b9x.html

2. http://dev.mysql.com/doc/refman/5.6/en/mysql-store-result.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章