一、前言
事务不回滚,原因可能有很多, 比如配置等等, 但是有一种问题是MySQL本身的问题, 这就比较恶心了。MyISAM是MySQL默认的存储引擎,在安装MySQL时如果没有指定存储引擎,那么MySQL会默认使用MyISAM,因为它不支持事务,所以效率会比InnoDB高一些。如果使用的是MyISAM,那么需要将其改为InnoDB。
二、修改方法
Windows系统:
1、打开“MySQL_HOME/my.ini”,把skip-innodb修改为#skip-innodb(注释掉)。
2、在[mysqld]下加上一句:default-storage-engine=INNODB
3、重启MySQL服务
4、原来已经存在的表,如果想使用事务,要修改它的存储引擎,在默认是InnoDB的情况下删除重建。当不想删除的时候,执行alter table 表名 ENGINE = InnoDB;
5、在使用了InnoDB引擎之后,再次运行代码,回滚成功!
Mac系统
参考链接: http://www.tuicool.com/articles/QBFZV3R
重点不是字符编码的问题, 而是下面这句话:
default-storage-engine=INNODB