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.

Voir la source
Document Skill original

Rendu depuis le dépôt source en conservant titres, exemples, code, tableaux, liens et images.

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.prismaPrisma生成 SQL diff
alembic/SQLAlchemy + Alembic生成 Alembic migration
migrations/通用扫描已有迁移推断
*.entity.ts / *.model.tsTypeORM / Sequelize从装饰器提取
schema.rb / db/migrate/RailsRails migration

Step 2: 提取当前 Schema

bash
# 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. 风险评估 — 标注高风险操作
sql
-- 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

bash
/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 COLUMNPostgreSQL 可直接 ALTER COLUMN ... TYPE ... USING;MySQL 用 新建列 → 迁移数据 → 删旧列MySQL 直接改类型可能丢数据,PG 的 USING 是原子转换
不加索引为查询字段加索引影响查询性能
迁移文件没有名字用描述性命名方便团队协作和回溯
不检查外键依赖先检查表间关系删除被引用的列会失败
du même dépôt

Autres Skills

Tous les Skills
wu529778790
Communauté

dependency-audit

Use when auditing project dependencies for security vulnerabilities, outdated packages, or license compliance across npm/yarn/pnpm, pip, go, and cargo.

installations
1
GitHub Stars
0
Mis à jour
16 août
wu529778790
Communauté

docker-build-deploy

Use when containerizing a Node.js app and setting up GitHub Actions CI/CD to build, push to GHCR, and deploy via SSH. Multi-stage build, non-root user, caching.

installations
1
GitHub Stars
0
Mis à jour
16 août
wu529778790
Communauté

git-hooks-setup

Use when setting up git hooks (pre-commit, commit-msg, pre-push) with husky or native hooks for linting, formatting, commit conventions, and secret scanning.

installations
1
GitHub Stars
0
Mis à jour
16 août
wu529778790
Communauté

github-figure-bed

Upload images to any GitHub repo as a figure bed and get CDN/markdown links (jsdelivr/jsdmirror/raw). One-time setup.sh guides gh login, auto-detects the owner, creates the default repo (img.shenzjd.com) if missing, and syncs config with the img.shenzjd.com web app via the repo's .imgx-config/config.json — upload with zero manual configuration. Use for uploading images to GitHub, generating CDN links, deleting/listing hosted images, or setting up a figure bed. Keywords: github figure bed, image host, CDN link, jsdelivr, jsdmirror, upload image to GitHub, 图床, 上传图片, CDN 链接, 初始化图床.

installations
1
GitHub Stars
0
Mis à jour
16 août