我们在新项目中使用Spring / MySQL/ mybatis组合。紫花莲-春天的事务管理。
我们使用的MySQL引擎是innoDB。我们第一次将MySQL DB用于微服务。
我们所面临的问题是,即使spring事务跟踪日志表明它们在DB上回滚,事务也不会回滚。原木
TransactionInterceptor:545 -在异常后完成service.EntityActionServiceImplementation.updateApplicationStatus事务: business.exception.BusinessException: / by 0 2018-11-14 16:22:32跟踪RuleBasedTransactionAttribute:134 -应用规则来确定事务是否应该在business.exception.BusinessException上回滚-- 2018-11-14 16:22:22:32跟踪RuleBasedTransactionAttribute:151 -获胜的回滚规则是:带模式的RollbackRuleAttribute business.exception.BusinessException-11-14 16:22:22:32跟踪事务同步同步管理器:248-为key删除了值org.mybatis.spring.SqlSessionHolder@6a1568d6.apache.ibatis.session.defaults.DefaultSqlSessionFactory@3db65c0d从线程主2018-11-14 16:22:32跟踪事务同步管理器:142-键org.apache.commons.dbcp.BasicDataSource@76cdafa3的检索值org.springframework.jdbc.datasource.ConnectionHolder@73bb573d绑定到线程主2018-11-14 16:22:22:32跟踪事务同步管理器:248-从线程主org.apache.commons.dbcp.BasicDataSource@76cdafa3删除值org.springframework.jdbc.datasource.ConnectionHolder@73bb573d从线程主2018-11-14 16:22:32调试DataSourceUtils:340 -返回到DataSource 2018-11-14 16:22:32 DEBUG DataSourceTransactionManager:836 -启动事务回滚2018-11-14 16:22:32调试DataSourceTransactionManager:341 -回滚JDBC事务在连接HikariProxyConnection@16957838包装oracle.jdbc.driver.T4CConnection@11c78080 2018-11-14 16:22:32跟踪事务处理同步管理器:336-清除事务同步
码块
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = BusinessException.class)
public boolean updateApplicationStatus(){
try{
}catch(Exception ex){
throw new BusinessException(ex.getMessage(), ex.getCause());
}
}如果我为数据源设置了自动提交假,则行为会发生变化。在这种情况下,事务根本不提交。
BusinessException扩展了一个RunTimeException。
架构和表引擎是InnoDB。
我们是否缺少任何mysql特定的设置?
发布于 2018-11-15 06:23:02
我为多个数据库使用了多个事务管理器。在注释中添加事务管理器标识符解决了这个问题。
https://stackoverflow.com/questions/53299667
复制相似问题