【问题标题】:Liquibase not executing changeset on H2 DB when precondition exists (tableexists)存在前提条件时,Liquibase 未在 H2 DB 上执行变更集(表存在)
【发布时间】:2020-07-14 09:34:07
【问题描述】:

在第一个变更集中表 tb_transformation 已经创建。下面是第 4 个变更集,当先决条件通过时,我在表中插入额外的列。但它没有执行变更集。当我删除前提条件并成功执行其插入时。

<changeSet id="2020-03-004-add-columns-to-tb_transformation" author="TAAS">
    <preConditions onFail="CONTINUE">
            <tableExists tableName="TB_TRANSFORMATION"/>
    </preConditions>
    <addColumn tableName="TB_TRANSFORMATION">
        <column name="MARKET_INFRASTRUCTURE" type="varchar(255)">
            <constraints nullable="false"/>
        </column>
    </addColumn>

【问题讨论】:

    标签: h2 liquibase


    【解决方案1】:

    是否存在某些表可能不存在的环境?如果不是,并且一切都被 Liquibase “控制”,那么您应该能够删除前提条件。

    【讨论】:

    • 是的。 Junits 在 H2 嵌入式数据库上执行。每次执行 junit 模块时,都会从头开始创建数据库。但表仅在第一个变更集中创建。根据文档,我相信 liquibase 应该在执行第一个更改日志后将表提交给 db。我希望表在执行上述变更集时存在于 db 中。但前提条件不成立。我想这是个问题。
    • 我从事 Liquibase 项目。如果您可以整理一个最小的复制案例并在github.com/liquibase/liquibase/issues 提交问题,我可以确保它得到解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多