Database Migration Helper
安全数据库迁移工作流,自动生成 Drizzle/Prisma/SQL 迁移脚本,包含回滚方案和数据完整性检查。
【AI技能】Database Migration Helper:功能详解与安装指南
技能简介
数据库迁移(Migration)是每个软件开发团队都无法回避的关键环节——无论是新增字段、修改索引,还是重构表结构,每一次变更都潜藏着数据丢失、不一致甚至服务宕机的风险。传统手动编写迁移脚本不仅效率低下,还容易因疏忽导致生产事故。
Database Migration Helper 正是一个为 AI 编程助手量身打造的专业技能模块。它能理解你的数据模型变更意图,自动生成符合规范的迁移脚本(支持 Drizzle ORM、Prisma 和 原生 SQL),同时为每一次变更配套完整的 回滚方案 与 数据完整性检查。无论是快速迭代的开发环境,还是需要严格审计的生产环境,这个技能都能让你在数据库变更时多一份从容与安全。
核心优势
1. 自动化脚本生成,告别手写错误
不再需要逐行编写 ALTER TABLE 或 CREATE INDEX 语句。你只需用自然语言描述变更需求(例如“为 users 表添加 age 字段,默认值为 18”),Database Migration Helper 就能自动生成对应的迁移脚本,并同步生成撤销脚本(rollback)。这不仅节省了重复劳动,更从根本上杜绝了因拼写或语法错误引发的迁移失败。
2. 内置带回滚的“安全网”
数据库迁移最怕的就是“回不去”。该技能强制要求每个迁移都附带回滚脚本,并自动检查回滚脚本的正确性(例如反向操作是否匹配)。当你需要紧急回滚时,只需执行一条命令,即可恢复到上一个稳定版本。想象一下:你刚刚在生产环境上了一个新索引,却发现导致查询变慢——有了回滚方案,你可以在 10 秒内安全撤回。
3. 数据完整性自动校验
迁移不仅仅是改结构,还要保证现有数据不受损。该技能会在生成迁移脚本的同时,自动插入数据完整性检查逻辑:比如检查是否有 NULL 值违反了新的 NOT NULL 约束、是否有重复数据即将插入唯一索引等。如果发现潜在冲突,它会提前给出警告和修复建议,而不是等到运行时才报错。
4. 多 ORM / 多数据库无差别支持
无论你用的是 Prisma、Drizzle,还是直接操作原生 SQL,这个技能都能适配。它内置了多种数据库方言(PostgreSQL、MySQL、SQLite 等)的语法知识,能够根据你的项目配置自动切换最佳实践。团队中有人用 Prisma、有人用 Drizzle?没问题,同一个技能可在不同项目中灵活切换。
5. 版本控制友好,集成 CI/CD
生成的迁移文件带有时间戳或递增编号,天然适配 Git 版本管理。你可以在代码审查中像审查普通代码一样审查迁移脚本。同时,该技能还能生成 CI 用的验证脚本,在合并前自动运行迁移测试,确保不会破坏现有数据模型。
主要功能
| 功能 | 说明 |
|---|---|
| 自动生成迁移脚本 | 根据自然语言描述或模型变化,自动输出 Drizzle、Prisma 或 SQL 格式的迁移文件 |
| 生成回滚脚本 | 每个迁移同步生成 undo 脚本,并验证上下操作的对称性 |
| 数据完整性检查 | 在迁移脚本中嵌入前置检查(如空值、重复值、外键引用),提前发现数据风险 |
| 多数据库/ORM 适配 | 支持 PostgreSQL、MySQL、SQLite 等主流数据库,以及 Prisma、Drizzle 等 ORM |
| 版本化文件管理 | 按照规范命名迁移文件,自动生成时间戳/序号,便于 Git 追踪和 CI/CD 整合 |
| 迁移预览 | 在执行前输出即将运行的 SQL 变更清单,支持 dry-run 模式验证 |
如何获取与安装
Database Migration Helper 是一个通用技能,可通过以下两种方式集成到你常用的 AI 编程助手中。
方式一:通过 Claude Code(推荐)
如果你使用的是 Claude Code,安装最为便捷:
# 方法 A:从官方技能市场安装(如果已上线)
claude /skill install database-migration
# 方法 B:手动导入 YAML 定义文件
# 1. 从 GitHub Topic 页面下载最新的 skill 定义文件
git clone https://github.com/topics/database-migration
# 或直接下载 database-migration.yaml
# 2. 将文件放入 Claude Code 的技能目录
mkdir -p ~/.claude/skills/
cp database-migration.yaml ~/.claude/skills/
# 3. 重启 Claude Code 或刷新技能列表
claude /skill list
如果你使用的 Claude Code 版本支持 /plugin 命令,也可以尝试:
claude /plugin install https://github.com/topics/database-migration
方式二:用于 Cursor
在 Cursor 中,将该技能作为自定义规则添加到 .cursorrules 文件:
- 在项目根目录创建或编辑
.cursorrules文件。 - 将以下规则追加到文件中(规则内容可从 GitHub 仓库获取):
# Database Migration Helper rules
rules:
- name: "database-migration"
description: "安全数据库迁移工作流"
trigger: "migration, migrate, 迁移"
instructions: |
- 当你需要生成迁移脚本时,首先理解数据库模型变更。
- 输出格式:包含 up 脚本和 down 脚本,以及数据完整性检查代码。
- 支持 Drizzle、Prisma 和原生 SQL。
- 每次迁移必须附带回滚方案。
- 在正式执行前提示用户进行 dry-run 验证。
- 保存后重启 Cursor 或重新加载规则。
方式三:通用 AI 助手(如 ChatGPT、Copilot)
若使用其他支持自定义指令的 AI 助手,可以将以下系统提示添加到会话的上下文或配置中:
你是一个数据库迁移专家。当用户提出数据库变更需求时,请按照以下流程:
1. 理解变更内容,识别目标数据库类型和 ORM。
2. 生成迁移脚本(up)和回滚脚本(down)。
3. 添加数据完整性检查逻辑。
4. 提供 dry-run 执行命令。
5. 输出文件建议命名格式。
支持的 ORM:Prisma、Drizzle;支持的数据库:PostgreSQL、MySQL、SQLite。
注意:为了保证最佳体验,强烈建议使用特定 AI 助手的技能/插件系统(如 Claude Code 的 skills 或 Cursor 的 rules),这样可以获得更稳定的上下文触发和结构化输出。
适用场景
- 微服务架构的数据库独立迁移:每个服务拥有独立数据库,频繁的小规模变更需要自动化脚本和回滚保障。
- 团队协作开发:多人同时修改数据模型,通过版本化的迁移文件避免冲突,并在 Code Review 中审查迁移逻辑。
- 生产环境紧急修复:需要快速上线某个字段或索引,同时准备好秒级回滚方案以应对意外。
- 数据平台数据仓库建设:频繁的 ETL 流程需要修改表结构,数据完整性检查可以避免数据管道污染。
- 新手友好型项目开发:团队中有初级开发者,该技能可以帮助他们生成标准、安全的迁移脚本,降低出错概率。
小贴士
- 始终先执行 dry-run:在正式运行迁移前,使用
--dry-run或预览模式查看即将执行的 SQL,确认不会误删数据或破坏现有索引。 - 将迁移文件纳入版本控制:确保
up和down脚本都被 Git 跟踪,并编写清晰的 commit message,方便日后回溯。 - 结合数据库备份使用:即使有了自动回滚,生产环境迁移前仍建议做一次全量备份,双重保险更安全。
免责声明:技能效果可能因版本和配置而异,请以官方文档为准。在实际生产环境中使用前,请务必在测试环境中充分验证迁移脚本的正确性。