7

我在本地 postgres.config 中将“max_prepared_transactions”设置为 20,但事务失败并出现以下错误跟踪(但仅在 Linux 上)。由于在 Windows 中,相同的代码可以无缝运行,如果这不是权限问题,我会徘徊。解决方案是什么?谢谢彼得

372300 [Atomikos:7] WARN atomikos - XA 资源 'XADBMS': 回滚 XID '3137332E3230332E3132362E3139302E746D30303030313030303037:3137332E3230332E3132362E3139 内部错误 - XA762E3139
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

This other post显示了一些准备XA连接的小型可重复测试,您可以查看一下,看看您是否正在做类似的事情:

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

于 2010-04-06T22:53:30.053 回答