Agent Skills
返回列表
💻

dbmate 轻量级数据库迁移 CLI

开发编程 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md 安装 @user_3c6cb52e/dbmate-lightweight-database-migration-cli。

技能介绍

数据库迁移的常见痛点

当在Go、Node.js、Python等不同语言或框架间切换时,现有迁移工具(如Knex、Alembic)的迁移文件格式与框架强绑定,无法直接复用;若项目需要支持PostgreSQL、ClickHouse等多种数据库,常需为每种数据库维护独立迁移脚本,语法差异导致维护成本翻倍。

dbmate 的核心设计思路

dbmate 用三个关键能力解决上述问题:

  • 框架无关性:作为独立命令行工具,迁移文件采用纯SQL编写,与任何编程语言或框架兼容,无需依赖特定运行时环境;
  • 多数据库覆盖:支持PostgreSQL、MySQL、SQLite、ClickHouse、BigQuery、Spanner等主流数据库,同一份SQL迁移文件可在多种数据库间复用;
  • 原子性迁移:迁移过程在数据库事务内执行,中途失败会自动回滚,避免数据不一致。

适用场景与注意点

适合需要跨语言/框架复用迁移脚本的项目,或使用小众数据库(如ClickHouse)的场景。需注意:迁移文件需遵循纯SQL规范,不支持框架特定的动态SQL生成特性;Docker部署时需配置--network=host确保数据库连接可达。

使用场景

  • 在Go项目中用dbmate管理PostgreSQL迁移,迁移文件可直接复用到Node.js项目,避免为框架重写脚本
  • 为ClickHouse或BigQuery编写表结构迁移脚本,需要工具原生支持这些数据库而不绑定编程语言
  • 团队用Go、Python、Rust分别开发多个服务,需要共享同一套迁移脚本,保证各环境表结构一致
  • 迁移过程中出现网络中断或SQL报错,需要事务自动回滚已执行的语句,避免数据库处于半更新状态

适合人员

  • 独立开发者:同时维护多个不同语言的个人项目,需要一套迁移脚本随代码一起复用
  • 全栈工程师:交替使用Go和Node.js开发后端,希望迁移工具不被单一框架绑定
  • 平台工程师:负责为ClickHouse等数据库设计schema变更流程,需要纯SQL且支持事务回滚的CLI
  • SQL工程师:习惯直接编写原生SQL迁移文件,不想学习框架特定的迁移语法或DSL