我正在尝试使用 liquibase 来跟踪使用 dropwizard-migrations 对 postgresql 数据库的更改。我希望能够在现有的生产数据库上运行迁移,而不是从头开始重建。现在我正在分期进行测试。我创建了一个带有前提条件的变更集。
<changeSet id="3" author="me">
<preConditions onFail="CONTINUE">
<not>
<sequenceExists sequenceName="emails_id_seq"/>
</not>
</preConditions>
<createSequence sequenceName="emails_id_seq" startValue="1" incrementBy="1" />
</changeSet>
如果序列已经存在,我的目标是跳过应用变更集。看起来很简单,但它不起作用。
ERROR [2013-09-13 22:19:22,564] liquibase: Change Set migrations.xml::3::me failed. Error: Error executing SQL CREATE SEQUENCE emails_id_seq START WITH 1 INCREMENT BY 1: ERROR: relation "emails_id_seq" already exists
! liquibase.exception.DatabaseException: Error executing SQL CREATE SEQUENCE emails_id_seq START WITH 1 INCREMENT BY 1: ERROR: relation "emails_id_seq" already exists
我也尝试过使用 MARK_RAN 而不是 CONTINUE。没有运气。