Jon*_*nik 5 spring h2 spring-data-jpa spring-boot
我知道 H2 有一个名为 的布尔属性/设置DATABASE_TO_UPPER,您至少可以在连接 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'
Run Code Online (Sandbox Code Playgroud)
所以问题是,DATABASE_TO_UPPER在这种情况下告诉 H2 禁用的最简单方法是什么?在使用EmbeddedDatabaseBuilder(见下文)创建 H2 数据源时,我可以在代码中执行此操作吗?或者在application properties也许?
这是在代码中显式初始化 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();
}
}
Run Code Online (Sandbox Code Playgroud)
另外,我告诉 JPA/Hibernate 不要自动生成嵌入式数据库(没有这个,就会出现两个内存数据库启动的问题):
spring.jpa.generate-ddl=false
spring.jpa.hibernate.ddl-auto=none
Run Code Online (Sandbox Code Playgroud)
小智 7
你不能 w\ the 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)
您可能希望放弃通过 EmbeddedDatabaseBuilder 进行显式创建。Spring Boot 根据配置自动创建 H2 实例。所以我会尝试这个application.properties:
spring.datasource.url=jdbc:h2:file:~/testdb;DATABASE_TO_UPPER=false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5632 次 |
| 最近记录: |