Skip to content

Everything Claude Code 的 database-migrations Skill 专为生产级数据库 schema 变更、数据迁移和零停机上线设计,支持 PostgreSQL/MySQL 及主流 ORM(如 Prisma、Drizzle、Kysely、Django、golang-migrate)。它自动应用行业最佳实践,防止锁表、数据丢失和环境漂移,显著提升 AI 编程助手驱动下的数据库演进安全性和效率。本文将带你分步掌握 Skill 的激活时机、核心操作流程、输出示例及与其他 Agent/Skill 的协作模式。

Everything Claude Code Database Migrations Skill:PostgreSQL/MySQL 零停机迁移与主流 ORM 最佳实践

数据库 schema 变更和数据迁移一直是生产系统最具风险的操作之一。传统手工 SQL 或 ORM 自动生成迁移脚本,极易出现锁表、数据丢失、回滚困难、环境漂移等问题。Everything Claude Code 的 database-migrations Skill,正是为了解决这些痛点而设计:它将行业最佳迁移模式、零停机策略、主流 ORM 工具链和安全审计流程集成到 AI 编程助手的自动化体系中,让你在 PostgreSQL、MySQL 及多种 ORM 框架下实现安全、可逆、可追溯的数据库演进。

无论你是初次接触数据库迁移,还是在大型项目中追求极致上线安全,这一 Skill 都能作为 Claude Code、Codex、Cursor 等 AI 编程助手的“数据库大脑”,为每一次 schema 变更保驾护航。推荐结合 Everything Claude Code 完全指南快速上手指南 系统理解 Skill/Agent/Hook 的集成方式。


一、Skill 解决了什么问题?

不用 database-migrations Skill 时:

  • 迁移脚本手写,缺乏标准流程,容易遗漏回滚、锁表、数据丢失等隐患
  • ORM 自动生成迁移但不区分 DDL/DML,混合变更难以回滚
  • 生产环境直接执行 SQL,环境不可追溯,容易发生“只在生产出错”的事故
  • 新增 NOT NULL 字段、索引等操作导致全表锁、业务中断
  • 回滚方案不规范,线上紧急修复困难

用上 database-migrations Skill 后:

  • 每次变更都自动生成可审计的迁移文件,生产环境绝不手工改表
  • 明确区分 schema 迁移与数据迁移,降低长事务和锁表风险
  • 零停机上线(expand-contract 模式)、批量数据迁移、并发索引等最佳实践自动纳入
  • 自动生成回滚脚本、审查不可逆变更,提前规避风险
  • 支持主流 ORM(Prisma、Drizzle、Kysely、Django、golang-migrate),跨语言/团队统一规范

二、Skill 触发时机(When to Activate)

  • 创建或修改数据库表(新增/删除字段、索引、表结构调整)
  • 批量数据迁移(历史数据补全、格式转换等)
  • 计划零停机 schema 变更(如重命名字段、拆分表结构)
  • 新项目初始化数据库迁移工具链
  • 需要回滚、审计、环境一致性保障时

Skill 也可与 Verification Loop 等自动化 Hook 协作,在 PR 合并、上线前自动触发迁移安全检查。


三、实际项目中的分步操作指南

Step 1:明确变更需求与分类

  • Schema 迁移:如新增字段、索引、表结构调整
  • 数据迁移:如历史数据补全、批量格式转换
  • 混合变更:强制拆分为两步,避免 DDL+DML 混在同一迁移

Step 2:选择 ORM/迁移工具并初始化

  • Prisma/Drizzle/Kysely 等 TypeScript ORM,或 Django(Python)、golang-migrate(Go)
  • Skill 会根据项目依赖自动检测并推荐最佳工具链

以 Prisma 为例:

bash
# 生成迁移
npx prisma migrate dev --name add_user_avatar

# 部署到生产
npx prisma migrate deploy

Drizzle 示例:

bash
npx drizzle-kit generate
npx drizzle-kit migrate

Django 示例:

bash
python manage.py makemigrations
python manage.py migrate

golang-migrate 示例:

bash
migrate create -ext sql -dir migrations -seq add_user_avatar
migrate -path migrations -database "$DATABASE_URL" up

Step 3:Skill 自动生成迁移文件和安全审计清单

Skill 会根据你的 schema 变更,自动输出如下内容:

  • UP/DOWN 迁移脚本(或标记不可逆)
  • 零停机建议(如 CONCURRENTLY 创建索引、expand-contract 重命名字段)
  • 数据迁移脚本分离(如批量 backfill)
  • 危险操作警告(如 NOT NULL 字段未设置默认值)
  • 回滚方案与文档

输出示例(PostgreSQL 新增字段):

sql
-- GOOD: Nullable column, no lock
ALTER TABLE users ADD COLUMN avatar_url TEXT;

-- GOOD: Column with default (Postgres 11+ is instant, no rewrite)
ALTER TABLE users ADD COLUMN is_active BOOLEAN NOT NULL DEFAULT true;

输出示例(并发创建索引):

sql
-- 推荐用 CONCURRENTLY,避免锁表
CREATE INDEX CONCURRENTLY idx_users_email ON users (email);

输出示例(零停机重命名字段):

sql
-- Step 1: Add new column
ALTER TABLE users ADD COLUMN display_name TEXT;
-- Step 2: Backfill
UPDATE users SET display_name = username WHERE display_name IS NULL;
-- Step 3: 应用代码同时读写新旧字段
-- Step 4: 删除旧字段
ALTER TABLE users DROP COLUMN username;

Step 4:本地/预发布环境回归测试

  • Skill 会提醒你在生产规模数据副本上测试迁移,避免“100 行表没问题,1000 万行锁死”事故
  • 自动生成批量数据迁移脚本(如分批 backfill,带进度输出)

批量数据迁移 PostgreSQL 示例:

sql
DO $$
DECLARE
  batch_size INT := 10000;
  rows_updated INT;
BEGIN
  LOOP
    UPDATE users
    SET normalized_email = LOWER(email)
    WHERE id IN (
      SELECT id FROM users
      WHERE normalized_email IS NULL
      LIMIT batch_size
      FOR UPDATE SKIP LOCKED
    );
    GET DIAGNOSTICS rows_updated = ROW_COUNT;
    RAISE NOTICE 'Updated % rows', rows_updated;
    EXIT WHEN rows_updated = 0;
    COMMIT;
  END LOOP;
END $$;

Step 5:上线与回滚

  • Skill 输出上线顺序、回滚脚本、注意事项
  • 自动检测生产环境 schema 是否已漂移,防止“只在生产出错”

Step 6:与其他 Agent/Skill 协作


四、常见输出与最佳实践清单

  • 每次迁移都生成 UP/DOWN 脚本(不可逆需标记)
  • 新字段默认可空或带默认值,严禁直接加 NOT NULL
  • 索引用 CONCURRENTLY,避免锁表
  • 数据迁移与结构迁移分离,避免长事务
  • 严格禁止手工 SQL 直改生产,所有变更均有迁移文件可审计
  • 回滚采用新 forward migration,绝不直接撤销已上线迁移
  • 生产环境一旦迁移不可修改历史迁移文件,防止环境漂移

五、常见配套 Agent/Skill 及协作关系

  • Database Reviewer Agent:自动审查迁移脚本的性能与安全隐患
  • Verification Loop Skill:集成端到端迁移验证,防止上线事故
  • Deployment Patterns Skill:自动化编排迁移与应用部署顺序
  • Code Reviewer Agent:审查涉及 schema 变更的应用代码,确保无遗漏

更多协作模式详见 Everything Claude Code 完全指南


FAQ

Q: Skill 是否支持多种数据库和 ORM?
A: 支持 PostgreSQL、MySQL 及主流 ORM(Prisma、Drizzle、Kysely、Django、golang-migrate),Skill 会根据项目自动适配最佳实践。

Q: 如何实现零停机迁移?
A: Skill 自动采用 expand-contract(扩展-收缩)模式,分阶段上线新字段、批量 backfill、逐步切换应用读写,最后安全删除旧字段,实现无中断升级。

Q: 遇到不可逆迁移怎么办?
A: Skill 会自动标记不可逆迁移,并要求你明确回滚方案或额外 forward migration,防止线上操作不可恢复。