首页/开发/CI/CD 与发布速查/迁移 down 脚本与其边界
质量门禁与回滚51 条

迁移 down 脚本与其边界

为结构变更编写回退脚本(如 Liquibase rollback、Rails db:rollback、Flyway 的 undo 能力),同时明确边界:已删除的数据无法靠结构回退恢复。

CI/CD 与发布速查开发更新于 2026-10-12
工具形态Flyway(Undo)、Liquibase rollback、Rails db:rollback
边界结构可回退,已删除的数据不可回退
验证在影子库演练 down 脚本
记录down 脚本与 up 一并评审入库

迁移脚本成对示例

迁移脚本成对示例
-- V1__add_status.sql
ALTER TABLE orders ADD COLUMN status VARCHAR(16);
-- U1__add_status.sql(回退)
ALTER TABLE orders DROP COLUMN status;
down 脚本 DROP 刚写入数据的列或表:回退即数据丢失,必须先评估并备份。

易错点

  • down 脚本长期不演练:真正需要时才发现语法或依赖错误
  • 把 down 当作数据恢复手段:误删数据的恢复要靠备份而不是结构回退

数据来源与参考

  • Liquibase 文档(Rollback)
  • Flyway 文档(Undo migrations)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌