我在JBoss 7.1.1 Final的server.log文件中看到以下(截断的)堆栈跟踪:
Caused by: org.postgresql.util.PSQLException:
ERROR: current transaction is aborted, commands ignored until end of
transaction block
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2102)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1835)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:512)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:374)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:302)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.6.0_23]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [rt.jar:1.6.0_23]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [rt.jar:1.6.0_23]
at java.lang.reflect.Method.invoke(Method.java:597) [rt.jar:1.6.0_23]
at org.postgresql.ds.jdbc23.AbstractJdbc23PooledConnection$StatementHandler.invoke(AbstractJdbc23PooledConnection.java:455)
at $Proxy49.executeUpdate(Unknown Source) at org.jboss.jca.adapters.jdbc.WrappedStatement.executeUpdate(WrappedStatement.java:371)
at org.infinispan.loaders.jdbc.TableManipulation.executeUpdateSql(TableManipulation.java:154) [infinispan-cachestore-jdbc-5.1.2.FINAL.jar:5.1.2.FINAL]
... 154 more
检查Postgres日志文件将显示以下语句:
STATEMENT: SELECT count(*) FROM ISPN_MIXED_BINARY_TABLE_configCache
ERROR: current transaction is aborted, commands ignored until end of transaction block
STATEMENT: CREATE TABLE ISPN_MIXED_BINARY_TABLE_configCache(ID_COLUMN VARCHAR(255) NOT NULL, DATA_COLUMN BYTEA, TIMESTAMP_COLUMN BIGINT, PRIMARY KEY (ID_COLUMN))
ERROR: relation "ispn_mixed_binary_table_configcache" does not exist at character 22
我正在使用JBoss 7.1.1 Final(即5.1.2.Final)附带的Infinispan。
所以这就是我正在发生的事情:
- Infinispan尝试运行该
SELECT count(*)...
语句,以查看;中是否有任何记录ISPN_MIXED_BINARY_TABLE_configCache
。 - 由于某种原因,Postgres不喜欢此声明。
- Infinispan对此不予理and,并在
CREATE TABLE
声明中坚持不懈。 - Postgres f之以鼻,因为它仍然认为这是同一笔交易,而Infinispan未能回滚,而该笔交易是从第一个
SELECT count(*)...
语句开始的。
此错误是什么意思,以及如何解决该错误的任何想法?
PSQLException: current transaction is aborted...
(25P02
),也许也JPA
可以Hibernate
。最终,这是由于我们的(nice!)Logback用法与重载的toString()
DAO对象一起使用导致了错误,并被很好地吞下了(但是我偶然发现了它):log.info( "bla bla: {}", obj )
产生了bla bla: [FAILED toString()]
。对其进行更改以log.info( "bla bla: {}", String.valueOf( obj )
使其为null安全,但不能将其吞并,从而使事务打开因不相关的查询而失败。