<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前提条件不起作用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)