PostgreSQLで思わぬエラー
とあるプログラム(というかテストケース)を流すと、↓のような例外が出た。
org.postgresql.util.PSQLException: ERROR: current transaction is aborted, commands ignored until end of transaction block
実際のテストケースはこんな感じ。
try{
// executeQueryでSQLExceptionが発生するよう細工して
// テストターゲットをコール
// ・・・
fail();
} catch(SQLException e) {
}// DBの状態が変化していないか確認
// ・・・
例外の原因調べていくと、どうやらPostgreSQLはとあるSQLの実行で失敗すると、
同じトランザクション内のそれ以降のSQLはすべて失敗するようになっているらしい。
上のテストケースでは、テストターゲットが使うConnectionとテストケースが
DBの状態確認で使うConnectionは同じものを使っていたので、この例外が出てたっぽい。
というわけで、書き直し・・・。