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

mysql:12995

From: 天野 潔 <天野 潔 <kiyoshi.amano@xxxxxxxxxx>>
Date: Thu, 18 May 2006 15:06:19 +0900
Subject: [mysql 12995] SQL 文の文法エラーで、以降ロックが解除できない?

お世話になっております。天野です。

以下のような SQL 文を C# で生成して mysql のサーバに投げているのですが、SQL 文法
エラーがあった場合、クライアントのプログラムがフリーズした上、mysqld を再起動し
ない限り、他のユーザもアクセスできなくなってしまいます。
	
	lock tables characters write, messages write;
	insert into characters … ;	←ここにSQL文法エラーがあった
	select sn from characters where  … ;
	
	ここで取得した sn の値を元に以下を実行
	
	update messages set … where sn = XX;
	unlock tables;

普通は SQL 文のエラーがあった場合、エラーメッセージをはいて SQL の接続の解除され
るのですが、上記のように lock tables があった場合、ロックした状態で接続が続いて
いるようなのです。

このシステムは、ログインの管理を mysql で行っているため、1ユーザのエラーで他の
ユーザがすべてログインできなくなるという、重大な問題が生じて困っています。

このようなことは普通にあるのでしょうか。また回避する方法はあるのでしょうか。
何かご存じの方がいらっしゃればよろしくお願いいたします。

バージョンは RHLE 3.0 に添付の mysql 3.23 を使用しています。
また、クライアントは XML Web サービスで mysql が稼働しているサーバにアクセスし、
Webサービスプログラムにより、ローカルでSQLにアクセスしています。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
天野 潔 <kiyoshi.amano@xxxxxxxxxx>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

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