记录错误Transaction was marked for rollback only; cannot commit

最近项目里老是报一个错误,Transaction was marked for rollback only; cannot commit,一开始觉得没头没脑的但肯定和事物有关,没一会又莫名其妙的好了,没有报错了,就没放在心上,后来再其他位置又重现了这个错误,所以在这里记录一下!
这个错字面意思很明显了,事务准备提交的时候发现已经被标记为仅回滚就无法提交,从而报错
在这里插入图片描述
网上看了一圈的解释:在一个service方法中调用了另一个service方法,其中调用的第二个方法发生异常,标记为rollbackOnly,就算在第一个service中catch后还是会报异常。或者其他状况下程序报错后将事务标记为仅回滚,继续执行,最后持久化时,因为事务的标记而报错

我觉得这个都好理解,坑在它这样报错之后,我们不知道具体是哪个位置报错的,以及报错的真实原因

问题出在这里
在这里插入图片描述
当报错之后这时事务状态已经改变了,但是程序在继续执行,直到最后才报一个最外层rollback only的错误
如果在出错后将错误进一步向上抛出,这个时候,就能看到具体报错的原因了
在这里插入图片描述

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值