Hibernate:创建Mysql InnoDB表而不是MyISAM

2022-08-31 17:07:45

如何让Hibernate(使用JPA)来创建MySQL InnoDB表(而不是MyISAM)?我已经找到了在使用Hibernate生成SQL文件以创建表时有效的解决方案,但没有一个“动态”工作。


答案 1

您不能指定休眠方言并使用

hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect

编辑

从MySQL版本>5.1开始,这应该是

hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect

以避免遇到此问题 在MySQL中使用“TYPE = InnoDB”会引发异常


答案 2

转到此链接:

mysql-dialect-refactoring

它清楚地说:

传统上,MySQL使用非事务性MyISAM存储引擎,这是所有早于MySQL55Dialect的方言的默认存储引擎。从MySQL55Dialect开始,默认情况下使用InnoDB存储引擎。

将以下内容放在 application.properties(或配置中)中:

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

上文第55号通知。- 不仅仅是5。

您也可以在控制台中看到它:

Hibernate: create table users_events (user_id bigint not null, event_id bigint not null) engine=InnoDB
Hibernate: create table users_roles (user_id bigint not null, role_id bigint not null) engine=InnoDB

希望它有帮助。


推荐