PostgreSQL、Atomikos 和 PREPARE 事务

问题描述

解决了下一个问题:我的应用程序由 Tomcat 8、Java 11、Spring 5、Atomikos 5、Postgresql 9.3.5 组成,抛出了一些奇怪的错误。在 Spring Repository 中,我有方法,它运行带有创建临时表的本机 sql 查询,然后执行一些 SELECT。在第一个方法调用我有一个日志输出

Hibernate: /* dynamic native sql query */  DROP TABLE IF EXISTS all_character;  CREATE TEMP TABLE all_character AS (...);  DROP TABLE IF EXISTS character_last_cut; 
Hibernate: /* dynamic native sql query */ SELECT * FROM ( SELECT sort_num ...
Hibernate: /* dynamic native sql query */  DROP TABLE IF EXISTS character_last_cut_ch_column;
15:52:45,284 ERROR XAResourceTransaction:66 - XA resource 'commonDataSource': prepare for XID 'XID: 3139322E3136382E302E3130322E746D313631373336343336353139373030303532:3139322E3136382E302E3130322E746D3532' raised -7: the XA resource has become unavailable
org.postgresql.xa.PGXAException: Error preparing transaction. prepare xid=XID: 3139322E3136382E302E3130322E746D313631373336343
... 
Caused by: org.postgresql.util.PsqlException: ERROR: cannot PREPARE a transaction that has operated on temporary tables
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2553)
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2285)

并且根据“当前不允许PREPARE执行任何涉及临时表的操作的事务,......”是正确的 - https://www.postgresql.org/docs/9.3/sql-prepare-transaction.html

但是在下一个方法调用中一切正常,没有任何错误。为什么该错误仅在第一次方法调用时抛出,而不会在后续调用中抛出?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...