mysql:4940
From: <mizuki-yamamoto@xxxxxxxxxx>
Date: Thu, 17 Jan 2002 11:50:03 +0900
Subject: [mysql 04940] MYSQL C API 「 mysql_use_result 」について
私は、山本と申します。 つぎの事象につきまして、どなたかご存知でしたら、教えてください。 状況としては、まずmysql_real_connectで、2つのコネクションを作成し ています。 片方のコネクションであるテーブル(ここではTABLE_Aとします)を検索して います。 そのTABLE_AはBLOB型を含んだ1レコードサイズの大きいもので、クライ アント処理にするのは 適さないため、検索時、mysql_use_resultを使用してます。 その検索1レコードのカレント行をローカル変数に読み込みその値を変更し、別コネ クションでそのレコードを 変更した値(ローカル変数から)でUPDATEをかけるという処理を最終抽出レ コードまでループする処理です。 この処理を実際に実行してみたところ、ある件数まで(ここでいう件数とは検索条件 にマッチする件数) はうまくいくのですが、その件数を超えると実行処理自体は正常終了で返してくるの ですが、実際は 検索されるはずの件数より少ない回数のループで終了してしまうという事象がおきて しまうのです。 例)上記処理をTABLE_Aから100件抽出するようなSQLを発行した場合。 検索される件数・・・100件、UPDATEされる件数・・・100件 上記処理をTABLE_Aから30000件抽出するようなSQLを発行した場合。 検索される件数・・・200件、UPDATEされる件数・・・200件 (このとき、whileのbreak条件として、mysql_fetch_rowがNULLに なったらという指定をしています) また、検索条件の正誤確認のためUPDATE部分のみコメントアウトして、走らせ たところ、 正しくループカウンタは30000を刻んでいました。 mysql_use_resultは同一コネクションでは最終行まで結果を返したあと、 mysql_free_resultにて結果セットを 開放してからでないといけないとありますが、別コネクションを張ったとしても、そ れに該当するのでしょうか? ご存知の方いらっしゃいましたら、ご回答よろしくお願いいたします。
-> 4940 2002-01-17 11:50 [<mizuki-yamamoto@xxx] MYSQL C API 「 mysql_use_result 」について 4941 2002-01-17 14:22 ┗["goudo" <goudo@xxxxx] 4944 2002-01-17 14:52 ┗[<mizuki-yamamoto@xxx]