sql >> データベース >  >> RDS >> Mysql

MySQLトランザクションをテストする方法は?

    まず第一に、あなたの実装にはバグがあります。クエリがエラーになった場合、現在のトランザクションは自動的にロールバックされてから閉じられます。したがって、クエリを実行し続けると、それらはトランザクション内に含まれなくなります(DBにコミットされます)。次に、Rollbackを実行すると 、それは黙って失敗します。 MySQLドキュメント から :

    Rolling back can be a slow operation that may occur implicitly without the user 
    having explicitly asked for it (for example, when an error occurs).
    

    明示的なコマンドROLLBACK アプリケーションでロールバックする必要があると判断した場合にのみ使用する必要があります(クエリエラー以外の理由で)。たとえば、アカウントから資金を差し引く場合、ユーザーが交換を完了するのに十分な資金を持っていないことがわかった場合は、明示的にロールバックします...

    トランザクションをテストする限り、私はデータベースをコピーします。新しいデータベースを作成し、「ダミーデータ」のセットをインストールします。次に、自動化されたツールを使用してすべてのテストを実行します。ツールは実際にトランザクションをコミットしてロールバックを強制し、テスト全体を通じて予想されるデータベースの状態が維持されていることを確認します。トランザクションへの入力が不明な場合、トランザクションから終了状態をプログラムで知ることは難しいため、ライブ(またはライブからコピーされた)データのテストは簡単ではありません。あなたはそれを行うことができます(そしてそうすべきです)が、あなたのシステムが機能しているかどうかを決定するためにそれらの結果に依存しないでください。これらの結果を使用して、自動テスターの新しいテストケースを作成します...



    1. 移動可能なタイプのデータベース接続または認証エラー

    2. 3つのテーブルから行を削除する方法-クエリエラー

    3. SQL Server(T-SQL)でデータベースのANSI_NULLS設定を見つける方法

    4. Oracleを使用したJPAでの悲観的なロックが機能しない理由