1. ホーム
  2. mysql

mysql: コマンドの同期がとれない。

2022-02-10 02:54:12
<パス

1.公式インストラクション
http://dev.mysql.com/doc/refman/5.7/en/commands-out-of-sync.html

2. この問題に遭遇する現象
mysql_queryを使用して複数のステートメントを実行すると、この関数は正常に実行されるものの、実行後にデータベースに新しいデータが見つからないだけでなく、その後、複数のステートメントを実行するとエラーになることが複数回確認されました。

理由は?mysql_res*が解放されていなかったためです。

    MYSQL_RES * pRes;
    int nError = mysql_query(m_pConn, strSQL);
    do 
    {
        pRes = mysql_use_result(m_pConn);
        mysql_free_result(pRes);
    } while (!mysql_next_result(m_pConn));

strSQLはN個のSQL文を含む文字列で、mysql_queryを実行した後、N個のMYSQL_RES *が対応し、ちょうど上記のコードですべての結果セットを解放します。