如何从数据库中删除最后执行的 liquibase 变更集

Posted

技术标签:

【中文标题】如何从数据库中删除最后执行的 liquibase 变更集【英文标题】:How to delete last executed liquibase changeset from database 【发布时间】:2021-10-21 08:53:03 【问题描述】:

我不小心运行了这个变更集,但我想对这个变更集进行一些修改。这仍处于开发模式,所以我不想添加另一个变更集来恢复这些更改。 我打算通过直接在数据库中执行 sql 查询从表中删除 PAYLOAD_SIZE 列。之后,我想通过一些修改再次运行变更集。

从 liquibase 文档中,我了解到 liquibase 在表 DATABASECHANGELOG 中为成功执行的变更集创建了一个条目。所以我打算从表 DATABASECHANGELOG 中删除与变更集“ADD_PAYLOADSIZE”相对应的条目。 从DATABASECHANGELOG中删除条目是否会导致任何不一致,请提出建议。

<changeSet author="*****" id="ADD_PAYLOADSIZE">
        <addColumn tableName="METER_DATA">
            <column name="PAYLOAD_SIZE" type="BIGINT" defaultValue="0"></column>
        </addColumn>
</changeSet>

【问题讨论】:

【参考方案1】:

不,只要您进行这两项更改就不会导致任何不一致(手动删除有效负载大小列并从 DATABASECHANGELOG 表中删除此更改集的条目)

【讨论】:

以上是关于如何从数据库中删除最后执行的 liquibase 变更集的主要内容,如果未能解决你的问题,请参考以下文章

在重新部署 .ear 文件期间未执行 Liquibase 脚本[关闭]

使用 mvn liquibase:diff 时如何禁用删除表和列?

使用 liquibase 在 postgres 中删除索引的问题

使用 liquibase 将数据从一个数据库复制到另一个数据库

Liquibase:diff 总是生成索引

在生产环境中执行 liquibase 更新