spring事务控制不起作用(MYSQL)

[color=red]blog迁移至[/color]:[url=http://www.micmiu.com]http://www.micmiu.com[/url]

[size=medium] 项目框架就是标准的ssh,测试发现不能实现数据回滚,花了大半天的时间去检查配置和程序均没有问题,主要是从以下几方面去查找问题:spring 事务配置、嵌套事务、异常是否已经被捕获、dao是否强制commit。
实在找不到原因,就在相同框架的前一个项目中测试,确能正常控制数据回滚,太奇怪了,此时突然想到当前项目的数据库是mysql,[color=red]mysql的表是有事务安全( 比如:InnoDB)和非事务安全(比如:ISAM、MyISAM)之分的[/color],随即登录到mysql数据库查看:
[/size]
show create table NAP_TB_USER;
CREATE TABLE `NAP_TB_USER` (
`ID` bigint(20) NOT NULL auto_increment,
`EMAIL` varchar(50) default NULL,
`MOBILE` varchar(20) default NULL,
`MSN` varchar(50) default NULL,
`INDEX_SETTING` varchar(50) default NULL,
`PASSWORD` varchar(50) default NULL,
`PHONE` varchar(20) default NULL,
`REAL_NAME` varchar(50) default NULL,
`USER_NAME` varchar(50) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `USER_NAME` (`USER_NAME`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

[size=medium]可知当前的表类型是[color=red]MyISAM[/color],是非事务安全的,所以无法实现数据回滚。
只要修改表的类型即可:[/size]
alter table tablename type=InnoDb;


[size=medium]如果是用hibernate自动建表,而mysql数据库默认的建表类型不是InnoDb,需要修改配置文件[/size]:

<property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>


-----------------------------------分 ------------------------------------隔 ------------------------------------线 --------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值