You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何删除数据库中最后执行的Liquibase changeset且避免数据不一致?

问题结论

首先明确:仅在该changeset尚未同步到共享测试/生产环境、仅在本地或小范围开发环境执行过的前提下,删除DATABASECHANGELOG对应记录+手动回滚数据库变更的操作不会导致数据不一致,是开发阶段调整错误changeset的常规操作。

操作前提验证

如果满足以下所有条件,可以按你的计划执行:

  • 该changeset仅在你本地开发数据库执行,未推送至团队共享的测试、预发、生产环境
  • 未将包含该错误changeset的代码提交至公共代码仓库,或即使提交也没有其他同事拉取执行过
正确操作步骤
  1. 手动执行SQL删除目标列:
ALTER TABLE METER_DATA DROP COLUMN PAYLOAD_SIZE;
  1. 匹配ID和作者删除DATABASECHANGELOG对应记录,避免误删其他同ID的变更记录:
DELETE FROM DATABASECHANGELOG WHERE ID = 'ADD_PAYLOADSIZE' AND AUTHOR = '你的原changeset作者名';
  1. 修改原changeset内容为你需要的逻辑,原changeset参考如下:
<changeSet author="*****" id="ADD_PAYLOADSIZE">
        <addColumn tableName="METER_DATA">
            <column name="PAYLOAD_SIZE" type="BIGINT" defaultValue="0"></column>
        </addColumn>
</changeSet>
  1. 重新执行liquibase update验证修改后的changeset能正常执行,表结构符合预期
注意事项
  • 如果该changeset已经同步到了共享环境,禁止用该方案,必须新增回滚changeset或者通过liquibase rollback命令操作,否则会导致多环境changelog记录不一致,后续更新报错
  • 操作前建议对METER_DATA、DATABASECHANGELOG表做临时备份,避免误删数据
  • 若代码已提交公共仓库,需同步所有相关开发人员执行同样的本地调整,避免后续执行冲突

内容的提问来源于stack exchange,提问作者Ashwini Raghu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 05:36:03