Appearance
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 deployDrizzle 示例:
bash
npx drizzle-kit generate
npx drizzle-kit migrateDjango 示例:
bash
python manage.py makemigrations
python manage.py migrategolang-migrate 示例:
bash
migrate create -ext sql -dir migrations -seq add_user_avatar
migrate -path migrations -database "$DATABASE_URL" upStep 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 协作
- 可与 Database Reviewer Agent 联动,自动审查 SQL 性能与安全
- 配合 Verification Loop 在 CI/CD 阶段自动校验迁移可逆性与环境一致性
- 与 Deployment Patterns 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,防止线上操作不可恢复。