SpringBoot程序报错事务回滚异常:Transaction rolled back because it has been marked as rollback-only
报错信息不完整,但根据提供的部分信息,可以推测是Spring Boot中的事务管理出现了问题,导致事务无法正常回滚。
可能原因:
- 事务方法不是public:Spring的AOP代理只适用于public方法。
- 异常类型不被声明在@Transactional注解的noRollbackFor或propagation属性不正确:可能配置了不会进行回滚的异常类型,或者事务传播行为不符合预期。
- 数据库本身不支持事务或者配置错误:比如不支持事务的数据库或者数据库连接配置错误。
- 事务已经在某个地方被手动回滚或提交了。
解决方法:
- 确保事务方法是public。
- 检查@Transactional注解的noRollbackFor属性,确保没有错误地声明不需要回滚的异常。
- 检查数据库和数据库连接配置,确保支持事务并且配置正确。
- 如果使用了多个事务管理器,确保@Transactional注解指定了正确的事务管理器。
- 确保没有在事务方法外部直接操作事务,例如提前提交或回滚。
精简版:
检查Spring Boot中的@Transactional注解配置,确保事务方法是public且异常类型正确处理。检查数据库和连接配置,确保支持事务。确保没有错误操作事务。
评论已关闭