gpt4 book ai didi

spring - 如何在Spring Boot中禁用H2的DATABASE_TO_UPPER,无需显式连接URL

转载 作者:行者123 更新时间:2023-12-02 04:02:10 25 4
gpt4 key购买 nike

我知道 H2 有一个名为 DATABASE_TO_UPPER 的 bool 属性/设置,您至少可以在连接 URL 中设置,例如:;DATABASE_TO_UPPER=false

我想将其设置为 false,但在我的 Spring Boot 应用程序中,我在任何地方都没有显式拥有 H2 连接 URL。正如我在日志中看到的那样,隐式地肯定存在一个连接 URL:

o.s.j.d.e.EmbeddedDatabaseFactory: Shutting down embedded database: 
url='jdbc:h2:mem:2fb4805b-f927-49b3-a786-2a2cac440f44;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=false'

所以问题是,在这种情况下告诉 H2 禁用 DATABASE_TO_UPPER 的最简单方法是什么?使用 EmbeddedDatabaseBuilder 创建 H2 数据源时,我可以在代码中执行此操作(见下文)吗?或者也许在应用程序属性中?

这就是 H2 数据库在代码中显式初始化的方式:

@Configuration
@EnableTransactionManagement
public class DataSourceConfig {

@Bean
public DataSource devDataSource() {
return new EmbeddedDatabaseBuilder()
.generateUniqueName(true)
.setType(EmbeddedDatabaseType.H2)
.setScriptEncoding("UTF-8")
.ignoreFailedDrops(true)
.addScripts("db/init.sql", "db/schema.sql", "db/test_data.sql")
.build();
}

}

另外,我告诉 JPA/Hibernate 不要 auto-generate embedded database (如果没有这个,就会出现启动两个内存数据库的问题):

spring.jpa.generate-ddl=false
spring.jpa.hibernate.ddl-auto=none

最佳答案

您无法使用generateUniqueName,但如果您调用setName("testdb;DATABASE_TO_UPPER=false"),则可以添加参数。我怀疑这是否得到官方支持,但它对我有用。

生成连接url的spring代码是这样的:String.format("jdbc:h2:mem:%s;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=false",databaseName)

关于spring - 如何在Spring Boot中禁用H2的DATABASE_TO_UPPER,无需显式连接URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33606800/

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