Repolode
amacneil

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. 1

    在 macOS 上通过 Homebrew 安装

    brew install dbmate
  2. 2

    检查安装后的帮助信息

    dbmate --help
  3. 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 数据每日更新。

相关项目