搭建了一個新框架,使用了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';