日期:2014-05-16  浏览次数:20434 次

用spring测试框架测试Mysql数据库时事务无法回滚

问题描述:

????? 在做DAO层得的成单元测试时,测试类XXXDAOIntegrationTest 继承了spring的测试基类AbstractTransactionalJUnit4SpringContextTests, 测试时事务没有正常回滚.

解决方案:

??? 首先排查代码没有问题. 最后发现是建立数据库表时, 没有指定表的引擎. Mysql5.xlinux下的默认引擎是MyISAM, 而不是期望的InnoDB, 所以建立数据库表时如果没有指定引擎, 那么表的引擎MyISAM, 从而导致不支持事务. 解决办法是把所有的表的引擎改为InnoDB, 事务正常回滚了.