目标
迁移先加列再因约束失败,留下半应用的结构并阻塞部署。本配方先检查迁移状态与已应用版本,定位失败的具体步骤,然后编写幂等的向前修复迁移补全结构(使用 IF NOT EXISTS 守卫),从而在不做破坏性回滚的情况下解阻部署;同时提醒已丢失的数据无法恢复。
步骤要点
- 检查迁移状态与已应用版本,定位失败步骤。
- 编写向前修复迁移并用 IF NOT EXISTS 保证幂等。
- 在预发库演练后再应用到生产。
- 确认结构符合预期且部署解阻。
migrate status
psql -c "SELECT * FROM schema_migrations ORDER BY version DESC LIMIT 5;"
排错提示
- 重试可能因列已存在而失败,需幂等守卫。
- 删列式回滚风险高,保留数据的向前修复更安全。
- 无法恢复已丢失数据。
适用边界
- 不重写结构历史。
- 每个迁移都需自行保证幂等。