7

ローカルの postgres.config で「max_prepared_transactions」を 20 に設定しましたが、トランザクションは次のエラー トレースで失敗します (Linux のみ)。Windows では同じコードがシームレスに機能するため、これが許可の問題でないかどうかはわかりません。解決策は何ですか?ありがとうピーター

372300 [Atomikos:7] 警告 atomikos - XA リソース 'XADBMS': XID のロールバック '3137332E3230332E3132362E3139302E746D30303030313030303037:3137332E3230332E313 resource262E3139302E 内部エラーが発生しました -6D7 が発生しました
org.postgresql.xa.PGXAException: 準備されたトランザクションのロールバック中にエラーが発生しました
        org.postgresql.xa.PGXAConnection.rollback (PGXAConnection.java:357) で
        com.atomikos.datasource.xa.XAResourceTransaction.rollback (XAResourceTransaction.java:873) で
        com.atomikos.icatch.imp.RollbackMessage.send (RollbackMessage.java:90) で
        com.atomikos.icatch.imp.PropagationMessage.submit (PropagationMessage.java:86) で
        com.atomikos.icatch.imp.Propagator$PropagatorThread.run(Propagator.java:62) で
        java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651) で
        java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676) で
        java.lang.Thread.run(Thread.java:595) で
原因: org.postgresql.util.PSQLException: エラー: 識別子 "1096044365_MTczLjIwMy4xMjYuMTkwLnRtMDAwMDEwMDAwNw==_MTczLjIwMy4xMjYuMTkwLnRtMQ==" を持つ準備済みトランザクションが存在しません
        org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse (QueryExecutorImpl.java:2062) で
        org.postgresql.core.v3.QueryExecutorImpl.processResults (QueryExecutorImpl.java:1795) で
        org.postgresql.core.v3.QueryExecutorImpl.execute (QueryExecutorImpl.java:257) で
        org.postgresql.jdbc2.AbstractJdbc2Statement.execute (AbstractJdbc2Statement.java:479) で
        org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags (AbstractJdbc2Statement.java:353) で
        org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate (AbstractJdbc2Statement.java:299) で
        org.postgresql.xa.PGXAConnection.rollback (PGXAConnection.java:347) で
4

1 に答える 1

6

同じ症状に関する洞察を探している他の人を助けるために編集されました

このエラーは、まだmax_prepared_transactions制限を超えていることを示しています。

編集した構成ファイルが使用されているものであること、および postgresql にその構成をリロードして編集済みのmax_prepared_transactions.

データベースにクエリを実行して、SQL でその設定に使用されているものを確認できます。

SHOW max_prepared_transactions;

元の回答max_prepared_transactionsは次のとおりです(正しく設定された仮定に基づいて):


setAutoCommit() をまったく使用していますか? 最近発見された次のバグが発生している可能性があります。

http://archives.postgresql.org/pgsql-jdbc/2010-03/msg00013.php

この別の投稿では、XA 接続を準備するためのいくつかの反復可能な小さなテストを示しています。

http://archives.postgresql.org/pgsql-jdbc/2009-01/msg00025.php

于 2010-04-06T22:53:30.053 に答える