同時更新に関する問題のため、アプリケーションに対して異なる分離レベルを試行しています。私はPostgresの9.3データベースとデータベース接続データソース経由でH2のトランザクション分離レベルを設定する
BasicDataSource ds = new BasicDataSource();
ds.setDefaultTransactionIsolation(
Connection.TRANSACTION_REPEATABLE_READ)
/* more config ... */
ds.getConnection()
を取得し、そこからデータソースを通じて分離レベルを設定し、行の同時更新がStandard SQL Transaction Isolation Levels
ERROR: could not serialize access due to read/write dependencies among transactions
上とPostgresのマニュアルに従って、期待されたエラーを、トリガーインメモリデータベースH2でこの現象を再現しようとするとConnection.TRANSACTION_READ_COMMITTED
に分離レベルを設定すると、期待どおり このエラーが消滅、分離レベルは、私のユニットテストの結果を変更していないようです。でもLOCK_MODE=0および/または私は同時更新org.h2.jdbc.JdbcSQLException: Concurrent update in table "MyTable": another transaction has updated or deleted the same row
にエラーが発生しますConnection.TRANSACTION_READ_UNCOMMITTED
とデータベースのURLを設定すると完全に隔離を無効にして
私の質問は次のようになります。どのように私は、特定の分離レベルを使用するようにH2の接続を設定します、私の変化のどれもロックモードまたは接続に私はJdbcSQLExceptionを取り除くのに役立ちます。
hmm、「あなたはH2を使用できません」という答えは本当に私が望む答えではありません:) – globalworming