微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Spring Boot 2 JPA应用程序中选择InnoDB或XtraDB作为MariaDB中的存储引擎

我正在使用Spring Boot 2.0.0.M6和Spring Data JPA开发一个新的应用程序.我正在使用MariaDB v10.
下面是我的dev属性文件.

spring.jpa.hibernate.ddl-auto=create-drop
spring.datasource.url=jdbc:mariadb://localhost:3306/testdb
spring.datasource.username=user
spring.datasource.password=
spring.jpa.show-sql=true
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
org.hibernate.dialect.Dialect=MariaDB53Dialect
spring.jooq.sql-dialect=MariaDB53Dialect

我得到输出

Hibernate: create table hibernate_sequence (next_val bigint) engine=MyISAM

我无法更改存储引擎.所有表都是使用存储引擎MyISAM创建的.

我可以使用其他存储引擎手动创建表.但出于某种原因,Spring或Hibernate只会回归到MyISAM引擎.

使用纯Hibernate-Java应用程序,Hibernate认使用InnoDB.

INFO: HHH000412: Hibernate Core {5.2.11.Final}

Hibernate: create table hibernate_sequence (next_val bigint) engine=InnoDB

有没有办法从Spring Boot属性覆盖数据库存储引擎?

谢谢

解决方法:

described in Spring Boot’s documentation中,所有以spring.jpa.properties为前缀的属性都会被传递给基础JPA提供程序(在本例中为Hibernate),并删除前缀.

用于配置方言的Hibernate属性是hibernate.dialect,其值应该是您要使用的方言的完全限定类名.在这种情况下,是org.hibernate.dialect.MariaDB53Dialect.

将上述内容放在一起,您可以在application.properties中设置以下属性

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

有了这个,你的基于Spring Boot的应用程序使用MariaDB方言:

2017-11-09 14:18:17.557  INFO 69955 --- [ost-startStop-1] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MariaDB53Dialect

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐