gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 10:26:39 24 4
gpt4 key购买 nike

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

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

关于spring - 如何在 Spring Boot 2 JPA 应用程序中选择 InnoDB 或 XtraDB 作为 MariaDB 中的存储引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47172085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com