如果已经存在liquibase格式的sql,我如何让liquibase跳过表创建?

时间:2017-12-28 22:48:38

标签: testing h2 liquibase

这就是我所拥有的

--preconditions onFail:CONTINUE
--preconditions not tableExists tableName:QRTZ_CALENDARS schemaName:dbo
CREATE TABLE dbo.QRTZ_CALENDARS (
 SCHED_NAME VARCHAR (120)  NOT NULL ,
 CALENDAR_NAME VARCHAR (200)  NOT NULL ,
 CALENDAR IMAGE NOT NULL
) 
GO

背景。我使用liquibase为java中的测试用例设置h2数据库。

3 个答案:

答案 0 :(得分:1)

目前,“格式化的SQL”更改日志中仅支持“ SQL检查”前提条件。 示例:

--preconditions onFail:HALT onError:HALT
--precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM my_table

信息来源(和更新):https://docs.liquibase.com/concepts/basic/sql-format.html

答案 1 :(得分:0)

向您的变更集添加前提条件,例如:

<preConditions onFail="MARK_RAN">
    <not>
        <tableExists tableName="Table_name"/>
    </not>
</preConditions>
<createTable tableName="Table_name" >
    <column name="column1" type="NUMBER(20,0)"/>
</createTable>

答案 2 :(得分:-4)

这是一个“愚蠢的问题”。 Liquibase应该跟踪变化而不是重新应用它们。

其他人可能会使用的学习方法是环顾四周。原因是spring.sboot正在运行schema.sql文件。

解决方案是仅使用liquibase来应用数据库更改。 liquibase脚本的失败帮助我找到了正在运行的其他脚本。