防止hsqldb在初始化数据库时出错而停止



为了测试我的应用程序,我编写了一个特殊的应用程序-context-test.xml我想使用内部hsqldb作为数据源,如下所示:

<jdbc:embedded-database id="dataSource" >   
        <jdbc:script location="classpath:sql/init.sql" />
        <jdbc:script location="classpath:sql/testData.sql"/>
</jdbc:embedded-database>

init.sql是由hibernate3 maven插件生成的,它从一些drop约束和表开始,如下所示:

alter table t_menu 
        drop constraint fk_menu_menu;

因此,当加载init.sql时,它当然会失败,并返回错误:

Caused by: java.sql.SQLException: Table not found: T_MENU in statement [alter table t_menu]
    at org.hsqldb.jdbc.Util.sqlException(Unknown Source)

我可以制作一个特殊的initTest.sql脚本,但每次模式更改时,我都必须手动更新它。

有没有任何选项可以告诉hsql在出现错误时继续执行脚本?

谢谢!

对于我最初的问题,我找到了一种忽略失败的方法:

<jdbc:initialize-database data-source="dataSource" ignore-failures="ALL">
    <jdbc:script location="classpath:sql/init.sql"/>    
    <jdbc:script location="classpath:sql/testData.sql"/>
</jdbc:initialize-database>
<jdbc:embedded-database id="dataSource" type="HSQL">

如果Hibernate自动生成DDL,为什么不删除脚本:

<jdbc:embedded-database id="dataSource" >   
        <jdbc:script location="classpath:sql/testData.sql"/>
</jdbc:embedded-database>

最新更新