mysql:15064
From: とみたまさひろ <とみたまさひろ <tommy@xxxxxxxxxx>>
Date: Fri, 13 Nov 2009 07:41:56 +0900
Subject: [mysql 15064] Re: "Commands out of sync"エラー
とみたです。 On Fri, 13 Nov 2009 01:06:24 +0900 "YAMAKITA, naomichi" <yamakita@xxxxxxxxxx> wrote: > MySQL 5.1でクライアントライブラリを作成しているのですが、 > クエリを発行後、稀に"Commands out of sync; you can't run this > command now" > というエラーが発生する場合があります。 > > 何が原因か調べていたところ、 > > 1.クエリAを発行:mysql_real_query() > 2.Aの結果セットを取得:mysql_use_result() > 3.Aの結果セットを解放:mysql_free_result() > > 2や3の処理が行われる前にクエリBが発行されたタイミ > ングで発生するようです。 > エラーの内容は分かるのですが、どのように対応すれば良いのか > いまいち対策が分かりませんでした。 > 2-3の間をロックする、といった手法になるのでしょうか。 mysql_real_query() の後は mysql_store_result() を行うか、 mysql_use_result() & mysql_fetch_row() ですべての行を取り出すまで、他の クエリを実行することはできません。 何の言語を使用しているのかわかりませんが、ライブラリ側で制御できないと いうことは、マルチスレッドとかでしょうか。 おっしゃる通りロックするのが一番確実だと思います。ちょっと複雑な処理が 必要になりますが、プリペアドステートメントを使用するのもありかもしれま せん。 -- とみたまさひろ <tommy@xxxxxxxxxx> 日本MySQLユーザ会 http://www.mysql.gr.jp
15063 2009-11-13 01:06 ["YAMAKITA, naomichi"] "Commands out of sync"エラー -> 15064 2009-11-13 07:41 ┗[とみたまさひろ <tomm] 15065 2009-11-13 16:51 ┗["YAMAKITA, naomichi"]