1

セットアップ

いくつかのかなり複雑な手順に取り組んでいるときに、単純なクエリをテーブルに呼び出す_debugストアド ロギング プロシージャを使用して、デバッグ情報をテーブルに記録し始めました。P_Log('message')INSERT_debug

複雑な手順には、エラーが発生した場合にロールバックされるトランザクションが含まれます。問題は、トランザクション中にログに記録されたデバッグ情報もロールバックされることです。手順が失敗したときにデバッグログを正確に確認できるようにする必要があるため、これはもちろん少し逆効果です。


質問

_debug挿入をロールバックせずに挿入できる方法はありますか? ログは実際には開発でのみ使用されるものであり、私はログに書き込むだけなので、トランザクションの意図された使用方法に違反するかどうかは気にしません。

好奇心から、これは通常どのように処理されますか? エラーのデバッグには、トランザクションがロールバックされているかどうかに関係なく、トランザクション内から任意のログ情報を書き込んだり、変数の状態を確認したりできることが絶対に重要なようです。ここでのベストプラクティスは何ですか?


可能な代替案

  1. ログを変数に保存し、手順の最後にのみ書き込みます。
    • これの問題は、任意の数のデバッグ エントリを挿入できるようにしたいということです。テキスト変数を作成し、後で機能するようにパーシングしますが、非常にハックなようです。
  2. mysql で組み込みのログを使用する
    • 任意のテキストを自由に書き込めるという意味であれば、実際にはこれで問題ありませんが、これまでのところ、このようなものを見つけることができませんでした。
4

1 に答える 1

2

最も簡単な方法は、ログ テーブルを MyISAM に変更することです。

トランザクションはサポートされておらず、完全に無視されます。また、挿入して選択するだけの場合、MyISAM の方が少し高速です。

私が知っている他の唯一の解決策は、ログ用に別の接続を作成することです。

于 2013-09-12T14:13:14.093 に答える