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);
註釋掉的第二行是改好後不會出現這個問題的代碼。官方文檔有這麼一句話
所以這個錯誤是由於在執行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