SuperAPI AI 工具集

database-migrations

部署与运维

查看项目

更新于 10-16 05:04

技能介绍

用途:为生产系统提供安全、可逆的数据库模式变更方案,适用于创建或修改表、增删列与索引、数据回填与转换、规划零停机变更,以及为新项目搭建迁移工具链。

核心原则:所有变更皆走迁移,禁止手动修改生产库;生产仅向前迁移,回滚需新的向前迁移;模式迁移与数据迁移分离,不在同一次迁移中混用 DDL 与 DML;针对生产规模数据测试;已部署的迁移文件不可再编辑。

主要能力与要点:

  • 迁移安全核查:包含 UP/DOWN 脚本;大表避免全表锁;新列带默认值或可空;索引并发创建;回填与模式变更拆分;测试并记录回滚方案。
  • PostgreSQL:推荐可空列或带默认值列,避免无默认值的 NOT NULL;索引用 CREATE INDEX CONCURRENTLY(注意不能在事务块内运行);重命名列用“扩展-收缩”分步迁移;删除列先移除代码再删列;大规模数据迁移用分批更新加 FOR UPDATE SKIP LOCKED。
  • ORM 工具链:Prisma 使用 npx prisma migrate dev --name、migrate deploy、migrate reset、generate,并用 --create-only 手写自定义 SQL;Drizzle 使用 npx drizzle-kit generate / migrate / push;Django 使用 makemigrations、migrate、showmigrations,数据迁移用 RunPython,删除列可结合 SeparateDatabaseAndState;golang-migrate 使用 migrate create、up、down 1、force VERSION 修复 dirty 状态。
  • 零停机策略:按扩展、迁移、收缩三阶段推进,先加新列并双写,再回填,再切换读取,最后在独立迁移中删除旧列。

限制:未提供具体价格、收费方式、版本要求及实际效果数据;部分数据库(如 MySQL)的专属语法与 TypeORM 示例文中未展开。