postgresql – Liquibase前提条件不起作用

postgresql – Liquibase前提条件不起作用,第1张

概述我正在尝试使用liquibase来跟踪使用dropwizard-migrations对 postgresql数据库的更改.我希望能够在现有的生产数据库上运行迁移,而不是从头开始重建.现在我正在测试分期.我已经创建了一个带有前提条件的变更集. <changeSet id="3" author="me"> <preConditions onFail="CONTINUE"> <n 我正在尝试使用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.没有运气.

解决方法 将更改集应用于现有数据库而不执行的更简单方法是使用 changelogSync命令.

以下命令演示了如何提取更改日志,然后将其与当前数据库同步:

liquibase --changeLog@R_502_6852@=mydb.xml generateChangeLogliquibase --changeLog@R_502_6852@=mydb.xml changelogSync

sync命令的作用是创建changelog表中的所有条目,以便liquibase文件现在可以正常用于更新数据库:

liquibase --changeLog@R_502_6852@=mydb.xml update
总结

以上是内存溢出为你收集整理的postgresql – Liquibase前提条件不起作用全部内容,希望文章能够帮你解决postgresql – Liquibase前提条件不起作用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1160113.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存