始终运行带有failOnError ="false"的Liquibase changeSet?

ebi*_*ebi 8 sql database-migration liquibase database-schema

我正在尝试changeSet在liquibase中执行以下操作,它应该创建一个索引.如果索引不存在,它应该静默失败:

<changeSet failOnError="false" author="sys" id="1">
    <createIndex unique="true"  indexName="key1" tableName="Table1">
        <column name="name" />
    </createIndex>
</changeSet>
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.问题是,这changeSet不会记录到DATABASECHANGELOG表中,因此每次liquibase运行时都会执行此操作.根据liquibase文档和例如Nathen Voxland的回答,我认为变更集应该在DATABASECHANGELOG表中标记为ran.相反它根本没有记录,正如我之前说的每次liquibase运行时都会执行(并且每次都会失败).

我错过了什么吗?

(我使用MySQL作为DBMS)

Mar*_*nor 8

在Nathen Voxland 给出的答案中,他推荐了在运行变更集之前使用先决条件检查数据库状态的更正确方法。

在我看来,忽略故障是一个坏主意.... 意味着您没有完全控制数据库配置....“failOnError”参数允许 liquibase 继续。如果实际上不是因为发生了错误,那么构建将变更集记录为已执行不是一个坏主意吗?