问题描述
我解决了下一个问题:我的应用程序由 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 (将#修改为@)