首页 > 其他分享 >Transaction rolled back because it has been marked as rollback-only大概问题及解决方法

Transaction rolled back because it has been marked as rollback-only大概问题及解决方法

时间:2023-06-28 11:23:49浏览次数:37  
标签:Transaction rollback rolled back only because

Transaction rolled back because it has been marked as rollback-only

问题:前几天遇到一个问题,代码没有抛出我想要的带自定义提示消息的异常,却报了个这个,去搜了一下,大概原因如下:

因为我在controller的方法上写了@Transactional注解,里边调用的service的方法上也写了@Transactional注解,并且我在controller还写了try Catch捕获,在catch中使用e.printStackTrace()打印,没有我想要的具体提示信息,在控制台直接报了

Transaction rolled back because it has been marked as rollback-only

我搜了一下,具体错误原因我没看太懂,反正大概意思就是因为事务嵌套抛异常的问题,有想研究的可以搜一下具体的

解决方式:

  1. 把service中的@Transactional取消掉,直接使用最外层的事务,但是我是调用了两个service,并且这两个service别的地方还需要单独用,所以就没用这种方式。
  2. 直接在controller层的catch中用日志语句打印出来。之前方法在日志中不显示报错信息,排查比较难,这种方式能直接打印原本的报错信息,我要的就是这种效果!
    log.error(e.getMessage(),e);
  3. 据我所知,不止这两种方式,欢迎补充

标签:Transaction,rollback,rolled,back,only,because
From: https://www.cnblogs.com/bkylxm/p/17510899.html

相关文章

  • 事务超时异常:org.springframework.transaction.TransactionTimedOutException: Transa
    报错如下:代码如下:Controllerimportcom.zwh.service.impl.TimeOutService;importlombok.extern.slf4j.Slf4j;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.w......
  • MSDTC(Microsoft Distributed Transaction Coordinator)是微软的分布式事务协调器,它是Wi
    MSDTC(MicrosoftDistributedTransactionCoordinator)是微软的分布式事务协调器,它是Windows操作系统中的一个组件。MSDTC提供了跨多个资源管理器(如数据库、消息队列等)执行事务的能力,确保事务的原子性、一致性、隔离性和持久性。MSDTC的主要功能如下:事务管理:MSDTC允许在跨多个......
  • 【数据库原理、编程与性能】Updata Transaction
    文章目录1.TransactionHistories1.1并发(Concurrency)1.2并发操作会出现的DB问题1.3并发控制技术1.4封锁1.4.1锁类型1.4.2事务锁之间的相容矩阵1.5LockingProtocol1.5.1一级封锁协议1.5.2二级封锁协议1.5.3三级封锁协议2.NotationsTransactionHistories2.1Notation......
  • 事务扩展机制TransactionSynchronization
    事务扩展机制TransactionSynchronization在进行数据库操作的时候,如果需要多个操作要么一起成功,要么一起失败那么就需要使用事务操作了。使用Spring框架只需要在方法上添加 @Transactional 注解这个方法就具有事务特性了。而且Spring也事务操作给开发者提供了很方便的扩展......
  • 什么时候选用OceanBase? OceanBase = transaction + scalability
    什么时候选择OceanBase?OceanBase能替代HBase,MongoDB吗?关于开源数据库OceanBase( http://oceanbase.taobao.org/ )的应用场景:如果你不需要事务(transaction),MongoDB等是不错的选择,如果你的数据量很大,HBase也是不错的选择;如果你需要事务(transaction),并且数据量不大,或者你可以......
  • 队列Rollback的设计
    有一个队列包含了N个block,每个block是队列中的一个元素。block很大,一个block中可以容纳M个item(M>1)。这个队列的基本使用模式就是:不断的有item过来,往block里面填充,一旦block满,就创建一个新的block,后继item都填往新block。rollback的定义:最后一个item填充到block中后,由于出现了某种错......
  • Java中@Transactional 注解使用注意事项
    隔离级别关键词原子性(Atomicity):事务是数据库的逻辑工作单位,它对数据库的修改要么全部执行,要么全部不执行。一致性(Consistemcy):事务前后,数据库的状态都满足所有的完整性约束。隔离性(Isolation):并发执行的事务是隔离的,一个不影响一个。如果有两个事务,......
  • 分析spring事务@Transactional注解在同一个类中的方法之间调用不生效的原因及解决方案
    问题:在Spring管理的项目中,方法A使用了Transactional注解,试图实现事务性。但当同一个class中的方法B调用方法A时,会发现方法A中的异常不再导致回滚,也即事务失效了。当这个方法被同一个类调用的时候,spring无法将这个方法加到事务管理中。我们来看一下生效时候和不生效时候调用堆栈日志......
  • CSS: Determine if an element has been totally scrolled
     Element:scrollHeightproperty-WebAPIs|MDN(mozilla.org) <!DOCTYPEhtml><htmllang="en-US"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge......
  • The rocketMQTemplate does not exist TransactionListener
    rocketmq-starter版本:2.2.1发送的代码:@Testpublicvoidtest1()throwsException{ //事务id StringtransactionId=UUID.randomUUID().toString(); info(">>>发送半消息!transactionId:{}",transactionId); //发送事务消息 TransactionSendResultsendResu......