2015-07-20 127 views
2

我在PostgreSQL中得到以下錯誤存在(9.2)日誌,而與JPA在休眠運行的Java EE應用程序:錯誤:準備交易並不在PostgreSQL中

ERROR: prepared transaction with identifier "131077_AAAAAAAAAAAAAP//fwAAAd5tKPBVp1XeAAAzfmx0Y2hpZS1ub2Rl_AAAAAAAAAAAAAP//fwAAAd5tKPBVp1XeAAAzpwAAAAAAAAAA" does not exist STATEMENT: ROLLBACK PREPARED '131077_AAAAAAAAAAAAAP//fwAAAd5tKPBVp1XeAAAzfmx0Y2hpZS1ub2Rl_AAAAAAAAAAAAAP//fwAAAd5tKPBVp1XeAAAzpwAAAAAAAAAA'

我如何優化設置,以避免這個錯誤?這是間歇性發生的。

+2

好像在兩階段事務的JTA你/ XA處理的錯誤。您或框架正試圖回滾一個從未準備好的或者已經回滾的xact。要確定哪些,並且瞭解更多關於發生的事情,請在'postgresql.conf'和/或您的應用程序框架中啓用更詳細的日誌記錄。 –

+0

我已經在應用程序中啓用了詳細的日誌記錄。我們需要在postgresql方面做些什麼來獲取更詳細的日誌,以獲取這個特定的ERROR? –

+0

你不能。這是儘可能多的信息。該事務不存在,因此它已被回滾/提交或從未創建。你可以在'postgresql.conf'中配置更多的日誌記錄*來跟蹤日誌文件中的PREPARE TRANSACTION,ROLLBACK PREPARED和COMMIT PREPARED語句。你也可以檢查'pg_prepared_xacts'表。 –

回答

9

原因可能是準備好的交易在默認情況下被禁用。 要啓用它們,編輯postgresql.conf中並設置一個值大於0

max_prepared_transactions = 64 
+0

目前max_prepared_transactions設置爲9。那好嗎? –

+1

這取決於您的應用程序和用戶數量。如果你仍然有這個問題,嘗試增加值,看看它是否不再發生。 –