我在生产环境中使用Oracle,我想使用H2进行测试。我会打字;
<jdbc:embedded-database id="dataSource">
<jdbc:script location="classpath:schema.sql"/>
<jdbc:script location="classpath:test-data.sql"/>
</jdbc:embedded-database>因此,我的表和脚本是自动创建的。但是我不能设置这个数据库的URL值。(为了与H2-Oracle兼容,我应该将;MODE=Oracle添加到url部分)
有没有办法实现这个目标?
或者仅仅是一种相反的解决方案;
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.h2.Driver"/>
<property name="url" value="jdbc:h2:file:h2\db"/>
<property name="username" value="sa"/>
<property name="password" value=""/>
</bean>此时,我可以编辑URL部分,但是如何将默认测试脚本(创建和数据sql)加载到此数据源?
发布于 2011-11-18 18:58:55
这种技术解决了这个问题;
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>然后添加该标签和定义;
<jdbc:initialize-database data-source="dataSource" ignore-failures="DROPS">
<jdbc:script location="classpath:testdb/schema.sql" />
<jdbc:script location="classpath:testdb/data.sql" />
</jdbc:initialize-database>发布于 2011-11-18 03:11:34
也许这会有所帮助: H2支持INIT script (打开连接时执行的SQL脚本)。在XML文件中,数据库URL将如下所示:
<property name="url" value="jdbc:h2:file:h2\db;INIT=
RUNSCRIPT FROM 'classpath:schema.sql'\;
RUNSCRIPT FROM 'classpath:test-data.sql'"/>( ;需要用反斜杠进行转义)。
https://stackoverflow.com/questions/8171688
复制相似问题