【发布时间】:2017-07-05 17:24:46
【问题描述】:
我需要设置一个嵌入式数据库才能在 Spring Boot 项目中运行我的测试用例。
我已将我的 SQL 脚本分成两个文件,以便为它们设置不同的分隔符:
一个包含我的基本创建表脚本 (NAME = create-table.sql, SEPARATOR = ;),另一个包含存储过程 (NAME = stored-procedures.sql, ,分隔符 = /;)。
根据this post 上的 cmets,我可以通过在 applicationContext.xml 中执行此操作为两个 sql 文件配置不同的分隔符:
<jdbc:initialize-database data-source="mctDBDataSource" ignore-failures="DROPS" >
<jdbc:script location="classpath:databaseTesting/inMemory/createInMemoryDatabase.sql" separator=";"/>
<jdbc:script location="classpath:databaseTesting/inMemory/createInMemoryDatabaseProcedures.sql" separator="/;"/>
</jdbc:initialize-database>
但就我而言,我正在尝试使用如下的非 XML 方法。
public DataSource myDataSource(){
return new EmbeddedDatabaseBuilder().generateUniqueName(true)
.setType(EmbeddedDatabaseType.HSQL).addScript("create-table").setSeparator(";").setEncryptEncoding("UTF-8")
.ignoreFiledDrops(true).build();
}
如果我只使用一个 SQL 文件,上面的代码可以正常工作。
如何将两个不同分隔符的 SQL 文件组合成一个 DataSource。
这样做是行不通的:
public DataSource myDataSource(){
return new EmbeddedDatabaseBuilder().generateUniqueName(true)
.setType(EmbeddedDatabaseType.HSQL).addScript("create-table")
.setSeparator(";").addScript("stored-procedures").setSeparator("/;")setEncryptEncoding("UTF-8")
.ignoreFiledDrops(true).build();
}
【问题讨论】:
标签: spring datasource embedded-database