文档章节

Spring boot中hibernate默认设置mysql存储引擎为MyISAM导致Mysql事务不支持

亚林瓜子
 亚林瓜子
发布于 2018/10/12 17:09
字数 376
阅读 138
收藏 0

原因

Mysql中表使用的存储引擎为MyISAM,导致对该表进行事务操作,没有进行正常回滚。

检查@Transactional

  • 是否用在public方法上面
  • 设置了 Exception.class类,即 @Transactional(rollbackFor = Exception.class)

检查msyql表

检查表存储引擎

zylMBP:~ zhangyalin$ mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1505
Server version: 5.7.19 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>use mydatabase;

mysql> SHOW TABLE STATUS WHERE Name = 'link';

结果如下:

检查mysql表存储引擎

当前link表,使用的存储引擎为MyISAM,这个是不支持事务的,要支持事务需要修改为InnoDB。

修改为InnDB

mysql> ALTER TABLE link ENGINE = InnoDB;
Query OK, 2 rows affected (0.04 sec)
Records: 2  Duplicates: 0  Warnings: 0

再次检查

ysql> SHOW TABLE STATUS WHERE Name = 'link';

结果如下:

再次检查mysql表存储引擎

这样就解决Spring设置事务无效的问题了。还需要设置Spring通过Hibernate创建mysql表默认使用InnoDB的存储引擎。

配置Hibernate

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect

参考:

springBoot service 事务注解@Transactional不起作用的解决

Spring Boot + JPA MySQL InnoDB 配置

13.7.6.36 SHOW TABLE STATUS Syntax

© 著作权归作者所有

亚林瓜子

亚林瓜子

粉丝 23
博文 257
码字总数 88625
作品 0
长沙
高级程序员
私信 提问
MySQL存储引擎InnoDB与Myisam的六大区别

MySQL有多种存储引擎,每种存储引擎有各自的优缺点,可以择优选择使用: MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。 MySQL支持...

Junn
2013/12/11
13.9K
2
MySQL: MyISAM和InnoDB的区别

InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行...

crazyinsomnia
2010/03/07
12.7K
2
MySQL —— 存储引擎的 InnoDB 与 MyISAM 之争

作为 MySQL 数据库的两种主要的存储引擎,InnoDB 与 MyISAM 各有长处。 在 MySQL 5.1 及之前的版本中,MyISAM 是默认的存储引擎,而在 MySQL 5.5 版本以后,默认使用 InnoDB 存储引擎。 MyIS...

剧与
2017/09/21
20
0
【超简单】MySQL存储引擎的选择与配置

【超简单】MySQL存储引擎的选择与配置 存储引擎简介 MySQL中的数据用各种不同的技术存储在文件(或内存)中。每一种技术都使用不同的存储机构,索引技巧,锁定水平并且最终提供广泛的不同的功...

漂移的兔子
2018/07/08
0
0
MySQL表类型MyISAM/InnoDB的区别(解决事务不回滚的问题)(转)

MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法。与其他存储引擎比较,MyISAM具...

easonjim
2017/05/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

聊聊nacos的LocalConfigInfoProcessor

序 本文主要研究一下nacos的LocalConfigInfoProcessor LocalConfigInfoProcessor nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java p......

go4it
昨天
5
0
前端技术之:webpack热模块替换(HMR)

第一步:安装HMR中间件: npm install --save-dev webpack-hot-middleware 第二步:webpack配置中引入webpack对象 const webpack = require('webpack’); 第三步:增加devServer配置项: ho......

popgis
昨天
5
0
死磕 java线程系列之线程池深入解析——体系结构

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 Java的线程池是块硬骨头,对线程池的源码做深入研究不仅能提高对Java整个并发编程的理解,也能提高自己...

彤哥读源码
昨天
7
0
虚函数表 图解

虚函数表 图解 p504

天王盖地虎626
昨天
6
0
java反射

学习目标  什么是反射  反射运行原理  了解反射机制的相关类  获取 class 对象的 3 种方式  通过反射获取构造方法并使用  通过反射获取成员变量并调用  通过反射获取成员方法并...

流川偑
昨天
5
2

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部