架构师修行录

数据库迁移·SKILL:告别手动执行SQL的自动化利器

鹿Sir上线,见字如面。

上周和我一哥们儿聊天,他吐槽了一件事:

"我们项目有 8 个模块,每次发版都要手动执行一堆 SQL 脚本。漏了一个,线上就炸;执行顺序错了,数据就乱。每次发布都像在拆炸弹..."

你是不是也有类似的经历?

  • 多个模块的 SQL 脚本散落各处,执行时总是漏掉几个
  • 本地、测试、生产环境切换,配置改来改去容易出错
  • 迁移失败后不知道怎么回滚,只能手动删表重建
  • 团队协作时,两个人的 SQL 版本号冲突,互相覆盖

如果你被这些问题困扰过,今天这个 SKILL 就是为你准备的。


它能帮你做什么?

简单说就是:你告诉我要迁移哪个模块,我帮你搞定一切。

使用前 vs 使用后

以前的你:

# 手动执行每个模块的SQL
mysql -u root -p fengqun_platform < sql/platform/001.sql
mysql -u root -p fengqun_erp < sql/erp/001.sql
mysql -u root -p fengqun_wms < sql/wms/001.sql
# ...还有 5 个模块

# 哪个执行了?哪个没执行?去数据库里查表吧

现在的你:

# 一句话,全部搞定
执行数据库迁移

# 想看状态?
查看迁移状态

# 执行错了?
回滚最后一个迁移

就这么简单,像跟同事说话一样自然。


为什么你需要这个 SKILL?

1. 再也不会漏执行 SQL

它会自动扫描你项目里所有的模块,一个都不会漏。你只需要说"执行迁移",剩下的交给它。

2. 一键回滚,不怕出错

执行错了?说一句"回滚",自动恢复到上一个版本。再也不用手动删表重建。

3. 多环境一键切换

本地开发用 local,测试用 test,切换环境只需一句话,配置自动跟随。

4. 团队协作不冲突

每个人的迁移文件都有唯一的时间戳,再也不会出现"我覆盖了你的 SQL"这种惨剧。

5. 新人 10 分钟上手

不用教复杂的命令,不用写操作手册。新人只需要知道:想迁移数据库,告诉 AI 就行。


真实场景:谁最需要它?

✅ 微服务/多模块项目团队

  • 每次发版要执行十几个模块的 SQL?用它,一句话搞定
  • 再也不用担心漏执行、顺序错、版本冲突

✅ 经常被发布折磨的开发者

  • 发布前紧张兮兮地检查 SQL 执行清单?现在可以放心了
  • 执行错了能一键回滚,不再手忙脚乱

✅ 带新人的技术 Leader

  • 新人第一次发布就搞砸数据库?不存在的
  • 不用写操作手册,AI 会指导他每一步

✅ 追求效率的全栈工程师

  • 一个人负责多个项目,每次发布都要重复同样的操作?
  • 交给 AI,你去喝杯咖啡

使用示例:就这么简单

在 AI 工具里,你只需要说:

执行数据库迁移

或者:

dbmate

或者:

查看迁移状态

AI 会自动完成所有工作:

  1. ✅ 检查环境是否就绪
  2. ✅ 发现所有需要迁移的模块
  3. ✅ 按正确顺序执行迁移
  4. ✅ 告诉你执行结果

你不需要记住任何命令,不需要看文档,不需要写脚本。


与 Flyway/Liquibase 对比,它强在哪?

你可能用过 Flyway 或 Liquibase,那为什么要用这个 SKILL?

传统工具 vs AI SKILL

对比维度
Flyway/Liquibase
这个 SKILL
学习成本
需要懂命令行、配置文件、XML/YAML 语法
会用自然语言就行
使用方式
随Spring工程启动,执行巨慢,调试巨麻烦
说一句"执行迁移"
环境切换
改配置文件或传多个参数
说一句"切换到测试环境"
错误处理
看错误日志,自己查文档解决
AI 自动诊断并给出解决方案
新人上手
需要培训+写操作手册
10 分钟,AI 全程指导
CI/CD集成
借助应用集成,占用资源
一句话调用,无缝集成
团队协作
需要统一工具版本和配置
开箱即用,零配置

核心差异

传统工具是"你操作工具":

  • 你需要记住命令
  • 你需要看文档
  • 你需要处理错误
  • 你需要写脚本集成到 CI/CD

这个 SKILL 是"工具服务你":

  • 你用自然语言下指令
  • AI 自动处理所有细节
  • 出错了 AI 告诉你怎么解决
  • CI/CD 里直接调用,不用写脚本

简单说:Flyway 是专业工具,这个 SKILL 是让工具变简单的智能层。


CI/CD 集成:让发布流程自动化

这个 SKILL 最强大的地方,是可以无缝集成到你的 CI/CD 流程中。

典型场景:代码合并后自动升级数据库

开发者提交代码 → PR合并 → CI构建 → CD部署 → 自动执行数据库迁移

以前你需要:

# .gitlab-ci.yml
stages:
-deploy
-migrate

deploy:
stage:deploy
script:
-./deploy.sh

migrate:
stage:migrate
script:
-flywaymigrate-url=$DB_URL-user=$DB_USER
# 还要处理各种参数和错误...

现在你只需要:

# .gitlab-ci.yml
stages:
-deploy
-migrate

deploy:
stage:deploy
script:
-./deploy.sh

migrate:
stage:migrate
script:
# 通过 qodercli 调用 SKILL,一句话搞定
-qodercli-p"/agent-dbmate 执行数据库迁移 --config=test"

实际工作流

场景 1:开发环境自动迁移

# 开发者合并代码后,CI 自动执行
qodercli -p "/agent-dbmate 升级DB"

# AI 自动完成:
# ✅ 检查环境
# ✅ 发现待迁移的模块
# ✅ 按顺序执行
# ✅ 输出结果

场景 2:测试环境一键升级

# 测试前,一键升级数据库到最新版本
qodercli -p "执行数据库迁移 --config=test"

# 如果需要回滚
qodercli -p "回滚最后一个迁移 --config=test"

场景 3:生产环境可控发布

# 先看状态
qodercli -p "查看迁移状态 --config=prod"

# 确认无误后执行
qodercli -p "执行数据库迁移 --config=prod"

# 有问题立即回滚
qodercli -p "回滚最后一个迁移 --config=prod"

为什么这样更好?

传统方式
SKILL 集成
写几十行 Pipeline 脚本
一行命令
脚本出错要调试
AI 自动诊断
换环境要改配置
一个参数搞定
日志分散,难排查
AI 输出清晰报告
新人不敢碰 CI/CD
AI 指导每一步

这让 CI/CD 从"运维专属"变成"人人都能用"。


常见问题

Q: 我需要懂数据库知识才能用吗?
A: 不需要。你只需要知道"我要迁移数据库",剩下的 AI 会处理。

Q: 执行错了怎么办?
A: 说"回滚"就行,自动恢复到上一个版本。

Q: 多模块项目支持吗?
A: 完美支持。自动发现所有模块,一个都不会漏。

Q: 能在不同环境使用吗?
A: 可以。local/test/prod 一键切换,配置自动跟随。

Q: 团队协作会冲突吗?
A: 不会。每个人的迁移文件都有唯一时间戳,互不干扰。


写在最后

这个 SKILL 的价值不在于"有多强大",而在于"能让你少操多少心"。

每次发布不再需要:

  • ❌ 对着清单一个个检查 SQL 是否执行
  • ❌ 紧张兮兮地担心漏掉某个模块
  • ❌ 执行错了手忙脚乱地回滚
  • ❌ 给新人写厚厚的操作手册

现在只需要:

  • ✅ 说一句"执行迁移"
  • ✅ 喝杯咖啡
  • ✅ 回来看到"迁移完成"

数据库变更不应该是一场赌注,而应该是一次可追溯的演进。

如果你也想从繁琐的数据库管理中解放出来,这个 SKILL 就是你的最佳选择。


获取方式

原创不易,如果这个 SKILL 能解放你的生产力,欢迎购买我的 SKILL 合集,你的支持是鹿Sir坚持的最大动力~

网盘链接:

https://pan.baidu.com/s/1HVwxzBq5dGD8PHoPivDupg

提取码(即将失效):