一个用于数据库结构迁移的 CLI 与 Go 库,支持 SQL 文件和 Go 函数两种迁移方式。
amacneil/dbmate
一个轻量、与框架无关的命令行工具,用纯 SQL 管理数据库迁移,适用于多人协作和多环境部署。
- Star
- 7,465
- Fork
- 385
- 未关闭 Issue
- 31
- 最近提交
- 昨天
这是什么?
Dbmate 通过按时间戳编号的 SQL 迁移文件,让数据库结构在多名开发者与生产服务器之间保持同步。它是独立的单一二进制程序,可与 Go、Node.js、Python、Ruby、PHP、Rust、C++ 等任何技术栈配合使用。
迁移文件使用纯 SQL 编写,同一文件中通过 `migrate:up` 和 `migrate:down` 区分升级与回滚逻辑。迁移默认在事务中执行,已应用的版本记录在 `schema_migrations` 表中。工具还可以将最终结构导出为 `schema.sql`,便于在 git 中查看结构变更。
支持 PostgreSQL、MySQL、MariaDB、SQLite、ClickHouse、BigQuery,以及通过 PostgreSQL 接口使用的 Spanner。连接信息可来自 `DATABASE_URL` 环境变量或 `.env` 文件,常用命令包括创建、删除数据库、等待数据库就绪和回滚。
核心功能
- 01使用纯 SQL 编写迁移文件,包含升级和回滚部分
- 02按时间戳编号迁移,避免多人开发时的版本冲突
- 03迁移默认在事务中原子执行
- 04导出 schema.sql 文件,便于在版本控制中审查结构变更
- 05从环境变量或 .env 文件读取数据库连接地址
- 06以单一二进制文件分发,无需额外运行时
适用场景
- 让一个应用的团队成员之间保持数据库结构同步
- 为使用不同语言编写的多个服务统一管理迁移
- 在 CI 中创建和删除测试数据库,再运行测试套件
- 在生产环境或容器中执行迁移,并等待数据库就绪
快速上手
- 1
在 macOS 上通过 Homebrew 安装
brew install dbmate - 2
检查安装后的帮助信息
dbmate --help - 3
通过 NPM 安装为开发依赖
npm install --save-dev dbmate
使用前须知
- 需要数据库连接 URL,因此必须先有正在运行的数据库服务,例如 PostgreSQL、MySQL 或 SQLite。
- PostgreSQL 默认要求 TLS 连接,本地环境通常需要添加 sslmode=disable。
标签
常见问题
- dbmate 是什么?
- 一个轻量、与框架无关的命令行工具,用纯 SQL 管理数据库迁移,适用于多人协作和多环境部署。 Dbmate 通过按时间戳编号的 SQL 迁移文件,让数据库结构在多名开发者与生产服务器之间保持同步。它是独立的单一二进制程序,可与 Go、Node.js、Python、Ruby、PHP、Rust、C++ 等任何技术栈配合使用。
- dbmate 可以免费使用吗?用的什么许可证?
- dbmate 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- dbmate 还在维护吗?
- 活跃维护中。dbmate 最近一次提交是在 2026年10月18日。
- dbmate 适合用来做什么?
- 让一个应用的团队成员之间保持数据库结构同步 为使用不同语言编写的多个服务统一管理迁移 在 CI 中创建和删除测试数据库,再运行测试套件 在生产环境或容器中执行迁移,并等待数据库就绪
- dbmate 怎么安装和运行?
- 在 macOS 上通过 Homebrew 安装: brew install dbmate 检查安装后的帮助信息: dbmate --help 通过 NPM 安装为开发依赖: npm install --save-dev dbmate
- 在哪里获取 dbmate?
- 源代码和安装说明在 GitHub 上:https://github.com/amacneil/dbmate
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
轻量级、无头的 TypeScript ORM,支持 PostgreSQL、MySQL 和 SQLite,可运行于 Node.js、Bun、Deno 及边缘运行时。
支持多种数据库的 AI 数据库客户端,同时提供 MCP 服务器供智能体查询。
免费、本地优先的 AI 辅助数据库客户端与 SQL 工作台,支持 40 多种数据库。
跨平台 SQL 编辑器与数据库管理工具,支持 Linux、macOS 和 Windows,可连接 MySQL、PostgreSQL、SQLite 等多种数据库。
轻量级跨平台数据库客户端,支持 100 多种数据库,提供桌面端、Docker、CLI、内置 AI 助手和 MCP 服务。