wu529778790/shenzjd-skills

db-migration-helper

Use when generating database migration SQL from model or schema changes — compares current vs desired schema, detects diffs, outputs reversible safe migrations.

First seen Jun 3, 2026

Installation

$ npx skills add wu529778790/shenzjd-skills --skill db-migration-helper

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from wu529778790/shenzjd-skills · top by installs.

npx skills add wu529778790/shenzjd-skills

Browse all from wu529778790/shenzjd-skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

License LICENSE
Default branch main
Open issues 0
Status Active

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 3,875 B
  • docs SUMMARY.md 189 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 770 installs

SKILL.md

DB Migration Helper

分析 model 变更,生成安全的数据库迁移 SQL。

Overview

对比代码中的实体/模型定义与当前数据库 schema,检测结构变更(新增表、增删列、改类型),生成向前兼容的迁移 SQL。支持 MySQL、PostgreSQL、SQLite。

When to Use

  • User wants to create database migrations
  • User modified model/entity definitions
  • User mentions migration, schema change, or sync
  • User says "生成迁移" / "create migration"
  • User inputs /db-migration-helper

When NOT to Use:

  • User only wants to view database structure
  • User wants data migration (not schema)
  • User uses ORM auto-migration
  • User wants to generate seed data
  • User wants to backup/restore database

Core Pattern

Step 1: 检测项目类型和 ORM

检测文件 ORM/框架 迁移方式
prisma/schema.prisma Prisma 生成 SQL diff
alembic/ SQLAlchemy + Alembic 生成 Alembic migration
migrations/ 通用 扫描已有迁移推断
.entity.ts / .model.ts TypeORM / Sequelize 从装饰器提取
schema.rb / db/migrate/ Rails Rails migration

Step 2: 提取当前 Schema

# Prisma (v2.18+,旧命令 introspect 已更名为 db pull,统一用 db pull)
npx prisma db pull 2>/dev/null

# 通用 — 从代码提取
grep -r "CREATE TABLE\|@Entity\|@Table\|model " --include="*.ts" --include="*.py" --include="*.go" -l

提取:

  • 表名和列定义
  • 列类型、约束(NOT NULL、DEFAULT、UNIQUE)
  • 索引和外键

Step 3: 对比变更

对比代码中的 model 定义与已有 schema(或上一次迁移),检测:

变更类型 风险等级 说明
新增表 直接 CREATE TABLE
新增列(有 DEFAULT) ALTER TABLE ADD COLUMN
新增列(无 DEFAULT) 需要处理已有数据
删除列 可能丢失数据,需要确认
修改列类型 可能不兼容
新增索引 CREATE INDEX
删除索引 DROP INDEX

Step 4: 生成迁移文件

使用 templates/migration.sql 模板,生成:

  1. Up 迁移 — 正向变更 SQL
  2. Down 回滚 — 反向回滚 SQL
  3. 风险评估 — 标注高风险操作
-- Migration: 20260603_add_user_avatar
-- Risk: LOW

-- Up
ALTER TABLE users ADD COLUMN avatar_url VARCHAR(500);
CREATE INDEX idx_users_email ON users(email);

-- Down
DROP INDEX idx_users_email;
ALTER TABLE users DROP COLUMN avatar_url;

Quick Reference

/db-migration-helper                    # 检测变更,生成迁移
/db-migration-helper --dry-run          # 只预览 SQL 不执行
/db-migration-helper --name add_user    # 指定迁移名称
参数 说明 默认值
--dry-run 只预览不执行 false
--name 迁移文件名 自动生成
--output 输出目录 ./migrations/

Common Mistakes

错误 正确做法 原因
不生成 down 回滚 始终生成回滚 SQL 出问题需要回退
删除列不备份 先备份数据再删列 数据丢失不可恢复
改类型用 ALTER COLUMN PostgreSQL 可直接 ALTER COLUMN ... TYPE ... USING;MySQL 用 新建列 → 迁移数据 → 删旧列 MySQL 直接改类型可能丢数据,PG 的 USING 是原子转换
不加索引 为查询字段加索引 影响查询性能
迁移文件没有名字 用描述性命名 方便团队协作和回溯
不检查外键依赖 先检查表间关系 删除被引用的列会失败