db-migration-helperlisted
Install: claude install-skill wu529778790/shenzjd-skills
# DB Migration Helper
分析 model 变更,生成安全的数据库迁移 SQL。
## Overview
对比代码中的实体/模型定义与当前数据库 schema,检测结构变更(新增表、增删列、改类型),生成向前兼容的迁移 SQL。支持 MySQL、PostgreSQL、SQLite。
## When to Use
- 用户要写数据库迁移
- 用户改了 model/entity 定义想同步到数据库
- 用户提到 migration、schema change、数据库变更
- 用户输入 `/db-migration-helper`
**When NOT to Use:**
- 用户只是想看当前数据库结构
- 用户想做数据迁移(不是 schema 变更)
- 用户用 ORM 的自动迁移(如 Prisma migrate、Alembic)
## 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
```bash
# Prisma
npx prisma introspect 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. **风险评估** — ��注高风险操作
```sql
-- Migration: 20260603_add_user_