有一位同学问了一个问题,也是拖了好几天,才得以抽出时间回答。
以前一直忽略了给大家说明mysql中MyISAM和InnoDB有一个重要的区别就是MyISAM是不支持事务的。这位同学的问题就是基于SSI创建的项目,所有配置和JAVA代码都是正常的,但是在抛出异常的时候,就是不能回滚事务,原因就是他使用的创建表的语句使用了MyISAM:
CREATE TABLE `user` (
`id` int(11) NOT NULL,
`username` varchar(45) NOT NULL,
`password` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=117 DEFAULT CHARSET=utf8;
改为下面的语句就可以了:
CREATE TABLE `user` (
`id` int(11) NOT NULL,
`username` varchar(45) NOT NULL,
`password` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;
有时候一个小小的忽略,就可能导致很长时间都找不出问题的原因,在这里记录一下,给有需要的童鞋提供一个参考的思路