ORA-0001: unique constraint (spq_nmg.uk_fpf_notice_nontax_log)violated
ORA-06512: at "spq_nmg.zhh_fpf_capital_receive", line 105
ORA-04088: error during execution of trigger ' spq_nmg.zhh_fpf_capital_receive'
与银行沟通,找到最近一次发的报文,未发现有错误,但日志后有大量报错。。。。。
11:01:07.682 E [executor-30] c.b.n.p.d.n.h.ServerHandlerPatch [ServerHandlerPatch.java:71] 处理报文出错
org.springframework.dao.DuplicateKeyException:
### Error querying database. Cause: java.sql.SQLIntegrityConstraintViolationException: ORA-00001: unique constraint (SPQ_NMG.UK_FPF_NOTICE_NONTAX_LOG) violated
ORA-06512: at "SPQ_NMG.ZHH_FPF_CAPITAL_RECEIVE", line 105
ORA-04088: error during execution of trigger 'SPQ_NMG.ZHH_FPF_CAPITAL_RECEIVE'
### The error may exist in URL [jar:file:/opt/bosssoft/ntpay-produce-front/lib/ntpay-domain-all-0.3.0-SNAPSHOT.jar!/mybatis/mappers/capital/CapitalReceive.xml]
### The error may involve com.bosssoft.ntpay.domain.dao.mybatis.capital.CapitalReceiveDAO.updateConfirm-Inline
### The error occurred while setting parameters
### SQL: update FPF_CAPITAL_RECEIVE SET FConfirm = ?, FLASTMODIFIED = ?, FFAILREASON=? where FID = ?
### Cause: java.sql.SQLIntegrityConstraintViolationException: ORA-00001: unique constraint (SPQ_NMG.UK_FPF_NOTICE_NONTAX_LOG) violated
ORA-06512: at "SPQ_NMG.ZHH_FPF_CAPITAL_RECEIVE", line 105
ORA-04088: error during execution of trigger 'SPQ_NMG.ZHH_FPF_CAPITAL_RECEIVE'
; SQL []; ORA-00001: unique constraint (SPQ_NMG.UK_FPF_NOTICE_NONTAX_LOG) violated
ORA-06512: at "SPQ_NMG.ZHH_FPF_CAPITAL_RECEIVE", line 105
ORA-04088: error during execution of trigger 'SPQ_NMG.ZHH_FPF_CAPITAL_RECEIVE'
; nested exception is java.sql.SQLIntegrityConstraintViolationException: ORA-00001: unique constraint (SPQ_NMG.UK_FPF_NOTICE_NONTAX_LOG) violated
ORA-06512: at "SPQ_NMG.ZHH_FPF_CAPITAL_RECEIVE", line 105
ORA-04088: error during execution of trigger 'SPQ_NMG.ZHH_FPF_CAPITAL_RECEIVE'
之后在日志中找到一句提示:
收到【未明资金冲正】到账数据,批次号[#BANK0534220627 xxxxxxxx #],资金流水号[xxxxxxxxxxxxxx]
根据这个资金流水号,到fpf_capitail_receive表中查到一条已存在记录,此记录的FBATCHNO字段为空。
原因就是如果发送2615时有BATCHNO编号,识别为正常到账确认报文,如果不带,被识别为未名资金到账, 之后银行重新发送一笔带BATCHNO编号的相同报文时,会被识别是要冲正之前的资金到账业务,暂时可以删除重复数据让银行重新发送报文来解决目前问题, 但为什么存储过程会报出两个错误 。。。。。。待续



