複数の SQL クエリを使用するアプリケーションがあり、奇妙なエラーが発生することがあります。
たとえば、次のようになります。
INSERT INTO TABLE (ID, FIELD) VALUES (1, "field value");
結果は次のようになります。
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
一意の主キー制約に違反しているためです。
MySQL でエラーの原因となったクエリと共に何らかの方法でエラーをログに記録することは可能ですか? /etc/mysql/my.cnfでerror-logとgeneral-logを有効にしようとしましたが、予期した結果が得られませんでした。エラーなしですべてのクエリのログを有効にすることができました (私たちにとってはほとんど役に立ちません。エラーが発生したクエリにのみ関心があります)。
エラーはアプリケーションによってキャッチできます (私たちの場合、Perl DBI を使用しています)。ただし、ストアド プロシージャに複数のステートメントがある場合、エラー メッセージにステートメントのテキストが含まれていないため、どのステートメントかわかりません。クエリ、または関連するテーブルの名前さえも。これにより、トラブルシューティングが非常に困難になります。
明らかな何かが欠けていると確信しています。たとえば、Oracle ではこれがデフォルトの動作であり、クエリ エラーはテキスト ファイルに記録され、簡単に識別できます。