[前][次][番号順一覧][スレッド一覧]

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"] &quot;Commands out of sync&quot;エラー  
->   15064 2009-11-13 07:41 ┗[とみたまさひろ <tomm]                                       
     15065 2009-11-13 16:51  ┗["YAMAKITA, naomichi"]