3

複数の SQL クエリを使用するアプリケーションがあり、奇妙なエラーが発生することがあります。

たとえば、次のようになります。

INSERT INTO TABLE (ID, FIELD) VALUES (1, "field value");

結果は次のようになります。

ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'

一意の主キー制約に違反しているためです。

MySQL でエラーの原因となったクエリと共に何らかの方法でエラーをログに記録することは可能ですか? /etc/mysql/my.cnferror-loggeneral-logを有効にしようとしましたが、予期した結果が得られませんでした。エラーなしですべてのクエリのログを有効にすることができました (私たちにとってはほとんど役に立ちません。エラーが発生したクエリにのみ関心があります)。

エラーはアプリケーションによってキャッチできます (私たちの場合、Perl DBI を使用しています)。ただし、ストアド プロシージャに複数のステートメントがある場合、エラー メッセージにステートメントのテキストが含まれていないため、どのステートメントかわかりません。クエリ、または関連するテーブルの名前さえも。これにより、トラブルシューティングが非常に困難になります。

明らかな何かが欠けていると確信しています。たとえば、Oracle ではこれがデフォルトの動作であり、クエリ エラーはテキスト ファイルに記録され、簡単に識別できます。

4

1 に答える 1

2

これはクライアントのものです。アクセスレイヤーでデータベースアクセスを分離し、クライアントでログを生成します。データベースはこれをログに記録できません。

于 2011-04-07T11:48:03.433 に答える