首页 > 解决方案 > Liquibase 没有回滚数据库标签

问题描述

当我从命令行执行回滚时,它显示成功执行。但是在数据库上没有应用任何更改。我正在使用 PostgreSQL 数据库。我用于回滚的命令是

java -jar C:\Users\Ranjith.s\.m2\repository\org\liquibase\liquibase-core\3.5.5\liquibase-core-3.5.5.jar --changeLogFile=src\main\resources\db\changelog\db.changelog-master.xml  --url=jdbc:postgresql://localhost/transformation_as_a_service --classpath=C:\softwares\liquibase\lib\postgresql-42.2.11.jar --username=transformation_as_a_service_admin --password=transformation_as_a_service_admin --logLevel=debug rollback version_2020.3.002

我正在粘贴更改日志文件以供参考

<changeSet id="2020-03-UPDATE-PRIMARY-KEY-TO-COLUMN-PID" author="TAAS">
    <preConditions onFail="HALT">
        <columnExists tableName="TB_TRANSFORMATION" columnName="PID"/>
    </preConditions>
    <dropPrimaryKey constraintName="pk_tb_transformation" tableName="TB_TRANSFORMATION"/>
    <addUniqueConstraint tableName="TB_TRANSFORMATION" columnNames="ID" constraintName="idx_taas_id" />
    <addPrimaryKey tableName="TB_TRANSFORMATION" columnNames="PID" constraintName="idx_taas_pid"/>
    <rollback>
        <dropPrimaryKey tableName="TB_TRANSFORMATION"/>
        <dropColumn tableName="TB_TRANSFORMATION" columnName="PID"/>
        <addPrimaryKey tableName="TB_TRANSFORMATION" columnNames="ID" constraintName="idx_taas_id"/>
    </rollback>
</changeSet>

<changeSet author="TAAS" id="tag_version_2020.3.002">
    <tagDatabase tag="version_2020.3.002" />
</changeSet>

标签: postgresqlliquibase

解决方案


如果这是您的完整变更日志,并且您在运行命令liquibase update之前运行liquibase rollback,那么它按设计工作。这个想法是您将运行更新并部署这些更改。然后您继续,添加更多变更集并使用更新命令部署它们。但是在其中一个部署中,您发现了一个问题并决定您需要返回一个已知良好的版本,因此您使用带有标签的回滚命令,它会在标签之后回滚所有内容。


推荐阅读