Skip to content
db-migrator logo

数据库迁移助手

db-migrator

数据库迁移助手 - Schema 对比、迁移脚本生成

SKILL.md

Full skill instructions

数据库迁移助手

触发条件

当用户要求数据库迁移、生成 migration、schema 变更、数据库升级时激活此技能。

工作流程

第 1 步:识别框架

扫描项目文件,判断使用的 ORM/迁移框架:

  • alembic.ini / alembic/ → Alembic
  • prisma/​schema.prisma → Prisma
  • pom.xml 含 flyway → Flyway
  • manage.py + settings.py → Django
  • Gemfile + db/​migrate/ → Rails

第 2 步:分析 Schema 变更

  • 对比 models 定义与现有迁移历史
  • 识别新增/修改/删除的表和字段
  • 检测索引、约束、外键变更

第 3 步:生成迁移脚本

根据框架生成对应的迁移文件,并同时生成回滚脚本。

第 4 步:风险评估

  • 大表 DDL 变更(锁表风险)
  • 数据迁移需求
  • 向后兼容性

迁移模板

Alembic (Python)

"""add email column to users

Revision ID: abc123
"""
from alembic import op
import sqlalchemy as sa

def upgrade():
    op.add_column('users', sa.Column('email', sa.String(255), nullable=True))
    op.create_index('ix_users_email', 'users', ['email'], unique=True)

def downgrade():
    op.drop_index('ix_users_email')
    op.drop_column('users', 'email')

Flyway (Java)

-- V2__add_email_to_users.sql
ALTER TABLE users ADD COLUMN email VARCHAR(255);
CREATE UNIQUE INDEX ix_users_email ON users(email);

-- 回滚脚本 (单独文件 U2__rollback_add_email.sql)
-- 逆向操作

Prisma (Node.js)

// schema.prisma 变更
model User {
  id    Int     @id @default(autoincrement())
  name  String
  email String? @unique  // 新增字段
}
# 生成迁移
npx prisma migrate dev --name add-email-to-users
npx prisma migrate dev --name add-email-to-users --create-only  # 仅生成不执行

Django (Python)

# users/​migrations/​0002_add_email.py
from django.db import migrations, models

class Migration(migrations.Migration):
    dependencies = [('users', '0001_initial')]

    operations = [
        migrations.AddField(
            model_name='user',
            name='email',
            field=models.EmailField(unique=True, null=True),
        ),
        migrations.RunSQL(
            sql='CREATE INDEX ix_users_email ON users(email);',
            reverse_sql='reverse_sql_here',
        ),
    ]

Rails (Ruby)

# db/​migrate/​20260617_add_email_to_users.rb
class AddEmailToUsers < ActiveRecord::Migration[7.0]
  def change
    add_column :users, :email, :string
    add_index :users, :email, unique: true
  end
end
rails db:migrate         # 执行迁移
rails db:rollback        # 回滚上一次
rails db:rollback STEP=3 # 回滚最近 3 次

回滚策略

场景策略
新增列直接移除该列
删除列无法自动回滚,需提前备份数据
修改列类型反向修改为原类型,注意数据丢失风险
新增表移除该表
数据迁移编写反向迁移脚本,保留原始数据快照
大表变更使用在线 DDL 工具避免锁表

注意事项

  • 总是生成 downgrade 回滚脚本
  • 大表变更需考虑在线 DDL,避免长时间锁表
  • 数据迁移与 schema 变更分开处理
  • 迁移脚本必须幂等,可重复执行不出错
  • 在 staging 环境验证后再应用到生产环境
  • 涉及删除列/表的变更,确保应用代码已先移除相关引用

More skills from laolaoshiren

test-generator logo
laolaoshiren/claude-code-skills-zh

test-generator

自动生成单元测试:识别函数逻辑、覆盖边界条件、生成可运行测试代码

876 0
View
git-workflow logo
laolaoshiren/claude-code-skills-zh

git-workflow

Git 工作流自动化 - 智能分支管理、提交信息生成、PR 创建

876 0
View
i18n-helper logo
laolaoshiren/claude-code-skills-zh

i18n-helper

国际化/本地化助手 — 扫描代码中的硬编码文本、生成 i18n 配置、批量翻译

876 0
View
zh-code-reviewer logo
laolaoshiren/claude-code-skills-zh

zh-code-reviewer

中文代码审查专家 - 生成详细的中文代码审查报告

876 0
View
log-analyzer logo
laolaoshiren/claude-code-skills-zh

log-analyzer

日志分析助手 — 智能解析日志文件,识别异常模式,定位问题根因

876 0
View
github-actions-gen logo
laolaoshiren/claude-code-skills-zh

github-actions-gen

GitHub Actions CI/CD 流水线生成器:根据项目技术栈自动创建 workflows

876 0
View
error-translator logo
laolaoshiren/claude-code-skills-zh

error-translator

编程错误消息翻译专家 — 将英文错误消息翻译成中文,解释原因并提供修复方案

876 0
View
zh-docgen logo
laolaoshiren/claude-code-skills-zh

zh-docgen

中文文档生成器 - 从代码库自动生成中文技术文档

876 0
View
api-tester logo
laolaoshiren/claude-code-skills-zh

api-tester

API 自动化测试 - OpenAPI 解析、测试用例生成、集成测试

876 0
View
security-audit logo
laolaoshiren/claude-code-skills-zh

security-audit

代码安全审计 - 漏洞扫描、依赖检查、安全最佳实践

876 0
View
eslint-fix logo
laolaoshiren/claude-code-skills-zh

eslint-fix

ESLint 自动修复专家 — 识别 ESLint 报错,批量修复,支持常见规则和自定义配置

876 0
View
env-manager logo
laolaoshiren/claude-code-skills-zh

env-manager

环境变量管理器:扫描、校验、同步 .env 文件,生成安全配置模板

876 0
View

Popular AI tools

Kaiber logo
Video

Kaiber

Generate, edit, and beat-sync AI video with leading models in one workspace.

Paid
View
Vimcal logo
Productivity

Vimcal

The world's fastest calendar for remote work

Free
View

Transform Your Design with AI Designer by ImgCreator.ai

Freemium
View
Akool AI logo
Content & writing

Akool AI

Revolutionizing Video Production with AI-Powered Creativity

Paid
View

Extend an image past the frame and let AI fill the new aspect ratio.

Freemium
View
StarByFace logo
Security

StarByFace

Discover your celebrity doppelgänger with StarByFace!

Free
View
C

ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.

Freemium
View
Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View