如何修复:ORA-2091:OracleXAException:由ORA-02292引起:XAErr违反了完整性约束

时间:2019-05-02 10:57:41

标签: java oracle hibernate weblogic12c xa

我正在尝试从应用程序中执行取消操作,该操作将从数据库中删除一条记录。但是,在测试环境中,日志中出现错误,并且“取消”失败。在我的本地主机中部署相同的应用程序时,它运行正常,没有任何问题。

我试图在本地环境中复制该问题,但是该问题在那儿起作用。

请注意,我的本地环境和测试环境都指向同一个数据库

在以下环境中产生的错误

App Server : WebLogic 12cR2

DB : 12c

OS : AIX

Java : 1.8

在以下环境中工作

App Server : WebLogic 12cR2

DB : 12c

OS : Windows 7

Java : 1.8

收到错误:

Caused by: oracle.jdbc.xa.OracleXAException: XAErr (100): The
inclusive lower bound oof the rollback codes. ORA-2091 SQLErr (0)
Caused by: java.sql.SQLTransactionRollbackException: ORA-02091: transaction rolled back
ORA-02292: integrity constraint (EDOC2.FK_REQ_DOC_TYPE) violated - child record found

完整错误日志

weblogic.transaction.RollbackException: XAErr (100): The inclusive lower bound oof the rollback codes. ORA-2091 SQLErr (0)
        at weblogic.transaction.internal.TransactionImpl.throwRollbackException(TransactionImpl.java:2104)
        at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:376)
        at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:262)
        at weblogic.ejb.container.internal.BaseRemoteObject.postInvoke1(BaseRemoteObject.java:442)
        at weblogic.ejb.container.internal.StatelessRemoteObject.postInvoke1(StatelessRemoteObject.java:20)
        at weblogic.ejb.container.internal.BaseRemoteObject.__WL_postInvokeTxRetry(BaseRemoteObject.java:307)
        at weblogic.ejb.container.internal.SessionRemoteMethodInvoker.invokeInternal(SessionRemoteMethodInvoker.java:67)
        at weblogic.ejb.container.internal.SessionRemoteMethodInvoker.invoke(SessionRemoteMethodInvoker.java:21)


Caused by: oracle.jdbc.xa.OracleXAException: XAErr (100): The inclusive lower bound oof the rollback codes. ORA-2091 SQLErr (0)
        at oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:1112)
        at oracle.jdbc.xa.client.OracleXAResource.commit(OracleXAResource.java:629)
        at weblogic.jdbc.jta.DataSource.commit(DataSource.java:1156)
        at weblogic.transaction.internal.XAServerResourceInfo.commit(XAServerResourceInfo.java:1572)
        at weblogic.transaction.internal.XAServerResourceInfo.commit(XAServerResourceInfo.java:625)
        at weblogic.transaction.internal.ServerSCInfo.startCommit(ServerSCInfo.java:644)
        at weblogic.transaction.internal.ServerTransactionImpl.localCommit(ServerTransactionImpl.java:2402)
        at weblogic.transaction.internal.ServerTransactionImpl.globalRetryCommit(ServerTransactionImpl.java:3386)
        at weblogic.transaction.internal.ServerTransactionImpl.globalCommit(ServerTransactionImpl.java:3291)
        at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:314)

Caused by: java.sql.SQLTransactionRollbackException: ORA-02091: transaction rolled back
ORA-02292: integrity constraint (EDOC2.FK_REQ_NEW_BE) violated - child record found

        at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:494)
        at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:441)
        at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:436)
        at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:1061)
        at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:623)
        at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:252)
        at oracle.jdbc.driver.T4CTTIOtxen.doOTXEN(T4CTTIOtxen.java:169)
        at oracle.jdbc.driver.T4CXAResource.doTransaction(T4CXAResource.java:818)
        at oracle.jdbc.driver.T4CXAResource.doCommit(T4CXAResource.java:455)
        at oracle.jdbc.xa.client.OracleXAResource.commit(OracleXAResource.java:624)

预期结果应该是它必须在本地环境和测试环境中均能正常工作。请让我知道我错过了什么。

0 个答案:

没有答案