0

Web アプリケーションのテスト中にデータベースの一貫性をチェックしていたところ、奇妙な現象が発生しました。

特定の時間の間にすべてのテーブルに Id のギャップがあります。つまり、114 から 130 までのすべての ID がなくなっており、その間に約 20 分の間隔があります。

詳しく説明すると、ロールバックされたトランザクションのように見えます。行の記録はなく、トリガーも実行されておらず、ログも記録されていません。

私のアプリケーションにはテーブルからデータを削除できるものは何もないので、Spring がコミットされずに残されていた (複数のデータベース要求の) 大規模なトランザクションをロールバックしたと信じるしかありません。

自動コミット オプションがオンになっており、サーバーはこの期間に再起動されませんでした。

このようなことが以前に起こったことを聞いたことがありますか?どんな助けや提案も大歓迎です...

ありがとう。


編集:

Tomcat ログを見ると、サーバーが適切なタイミングで再起動を強制したようです。これにより、JDBC はこのようなトランザクションをロールバックしますか?

サーバーが理由もなく再起動したようです... これは Tomcat または JDBC のバグですか?

4

1 に答える 1

0

Tomcat の不適切なシャットダウンがロールバックの原因であるということは、一般的に同意されていると思います。

Springs トランザクション マネージャーの別の実装の使用を開始しましたが、問題が再発しないことを願っています。

ありがとう。

于 2010-12-17T09:10:20.793 に答える