用spring测试框架测试Mysql数据库时务务无法回滚
用spring测试框架测试Mysql数据库时事务无法回滚
问题描述:
在做DAO层得的成单元测试时,测试类XXXDAOIntegrationTest 继承了spring的测试基类AbstractTransactionalJUnit4SpringContextTests, 测试时事务没有正常回滚.
解决方案:
首先排查代码没有问题. 最后发现是建立数据库表时, 没有指定表的引擎. 而Mysql5.x在linux下的默认引擎是MyISAM, 而不是期望的InnoDB, 所以建立数据库表时如果没有指定引擎, 那么表的引擎MyISAM, 从而导致不支持事务. 解决办法是把所有的表的引擎改为InnoDB后, 事务正常回滚了.