记录一次Spring boot 搭建框架连接Mysql数据库注解事务不回滚的故障
搭建了一个新框架,使用了spring boot 替换以简化原来繁杂的spring配置,使用Spring注解管理事务,持久层使用mybatis。
连接mysql数据库完成项目的过程中发现不支持事务,因为用的新框架自己本身也不是很了解,刚开始一直以为是自己的框架搭建的有问题,
后来发现是mysql数据库引擎的问题
解决方案
MyISAM不支持事务,InnoDB支持事务
- 先检查你的mysql版本 ,mysql 4.0系列之前是不支持事务的。 SELECT VERSION();
- 检查你的数据库支持哪些引擎 show engines;
- 查询当前数据库默认的引擎 show variables like '%storage_engine%';
- 看某个表用了什么引擎 show create table 表名;
- 修该表的存储引擎的方法
- 修改配置文件my.cnf,在[mysqld]最后添加为上default-storage-engine=InnoDB,重启数据库服务,数据库默认的引擎修改为InnoDB
-
建表的时候指定 create table t_user( id int primary key,name varchar(50) ) engine=InnoDB;
-
建完表后修改 alter table 表名称 ENGINE = InnoDB;
-
批量生成某个库的的修改引擎语句,执行生成的这些语句即可
SELECT CONCAT('ALTER TABLE ',table_name,' ENGINE=InnoDB;') FROM information_schema.tables WHERE table_schema='数据库的名称' AND ENGINE='myisam';