frank0 2012-07-08
昨日,本人学习spring整合hibernate,在声明式事务处理时遇到问题了,令我百思不得其解。
问题:在事务处理时抛了RuntimeException却没有回滚数据库,还是往数据库中插入了值
解决:今天在Google上找了半天,没有找到解决办法。我就想,是不是数据库的问题呢?就在网上找MySQL关于数据库回滚的问题,终于让我找到了
1.首先,查看你数据库中表的类型是否支持回滚命令为:showtablestatus;,我就发现在我的表类型为MYISAM,这种类型默认不支持回滚,而InnoDB支持
2.问题查出来了,现在怎么把类型改为InnoDB类型呢?在MySQL中输入命令:altertabletablenameengine=InnoDB;
好啦,大功造成了,再用Spring+hibernate抛运行时异常时果然回滚啦