環境:
MySQL C コネクタを使用してコードを書いています。
不具合:
データをフェッチするための 2 回目 (およびそれ以降のすべて) の呼び出しでは、常に「コマンドが同期されていません」「このコマンドを今すぐ実行できません」というエラーが返されます。
- 呼び出しごとに同じSQLを実行しています。
- 呼び出し間の接続を閉じると、エラーは発生しません。
アルゴリズム:
ストアド プロシージャの呼び出しを準備します。
メタデータを取得するには、mysql_stmt_result_metadata() を呼び出します。
結果をバインドします。
mysql_stmt_store_result() を呼び出して結果をバッファします。
すべての結果を取得するには、mysql_stmt_fetch() を呼び出します。
終了したら mysql_stmt_free_result() を呼び出します。
mysql_stmt_close() を呼び出します。
この例からコードをモデル化しました。私が行った唯一の変更は、mysql_stmt_store_result() を呼び出すことでした。これにより、フェッチする前に結果セットのサイズを取得できました。
助言がありますか?