db-migrator

Solid

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

AI & Automation 686 stars 69 forks Updated 2 days ago MIT

Install

View on GitHub

Quality Score: 90/100

Stars 20%
94
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
50
License 10%
100
Description 5%
100

Skill Content

# 数据库迁移助手 ## 触发条件 当用户要求数据库迁移、生成 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) ```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) ```sql -- 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) ```prisma // schema.prisma 变更 model User { id Int @id @default(autoincrement()) name String email String? @unique // 新增字段 } ``` ```bash # 默认仅生成迁移,不执行数据库变更 npx prisma migrate dev --name add-email-to-users --create-only ``` 检查生成的 SQL、连接目标和备份后,再由用户确认执行: ```bash # 开发环境应用迁移 npx prisma migrate dev # 生产环境应用已审核并提交的迁移 npx prisma migrate deploy ``` ### Django (Python) ```python # users/m...

Details

Author
laolaoshiren
Repository
laolaoshiren/claude-code-skills-zh
Created
3 months ago
Last Updated
2 days ago
Language
Python
License
MIT

Integrates with

Similar Skills

Semantically similar based on skill content — not just same category