一个部署在数据旁边的浏览器版 SQL IDE,连接数十种数据库与数据存储,内置 SSO、审计日志和 AI 辅助查询,采用 MIT 许可。
golang-migrate/migrate
基于 Go 的数据库迁移工具,提供 CLI 和库,按顺序将结构变更应用到多种数据库。
- Star
- 18,983
- Fork
- 1,618
- 未关闭 Issue
- 492
- 最近提交
- 上个月
这是什么?
migrate 从本地文件系统、S3、GitHub 等来源读取带版本号的迁移文件,并按顺序应用到目标数据库。每次迁移包含 up 和 down 两个文件,既可以向前执行,也可以回滚。数据库驱动负责具体执行,排序和状态管理等核心逻辑则集中在主程序中。
支持的数据库包括 PostgreSQL、MySQL/MariaDB、SQLite、MongoDB、Cassandra、Neo4j、Google Cloud Spanner、CockroachDB、ClickHouse 和 SQL Server 等。迁移来源可以是文件路径、io/fs、嵌入的二进制数据,也可以是 GitHub、GitLab、Bitbucket、AWS S3 或 Google Cloud Storage。
既可以作为独立命令行工具使用,也可以通过官方 Docker 镜像运行,或作为 Go 库引入项目。作为库使用时可以复用已有的数据库连接和自定义日志,并支持优雅停止,以减少迁移中途中断导致的数据损坏风险。
核心功能
- 01按版本号顺序执行 up 和 down 迁移文件。
- 02支持 PostgreSQL、MySQL、SQLite、MongoDB、Spanner 等多种数据库。
- 03可从文件系统、嵌入数据、Git 托管平台和云存储读取迁移。
- 04提供命令行工具、Docker 镜像和 Go 库三种使用方式。
- 05作为库使用时可复用已有数据库客户端和自定义日志。
适用场景
- 为基于 PostgreSQL 或 MySQL 的 Go 服务管理版本化的表结构变更。
- 在 CI/CD 或容器部署流程中自动执行数据库迁移。
- 将迁移文件嵌入 Go 二进制文件,随应用一同发布。
- 用同一工具管理多种数据库引擎的结构变更。
快速上手
- 1
阅读入门指南并按其说明安装命令行工具
- 2
使用 Docker 运行迁移,并替换迁移目录占位符
docker run -v {{ migration dir }}:/migrations --network host migrate/migrate -path=/migrations/ -database postgres://localhost:5432/database up 2
使用前须知
- 项目元数据中未明确标注许可证,使用前请先查看仓库的许可证条款。
标签
常见问题
- migrate 是什么?
- 基于 Go 的数据库迁移工具,提供 CLI 和库,按顺序将结构变更应用到多种数据库。 migrate 从本地文件系统、S3、GitHub 等来源读取带版本号的迁移文件,并按顺序应用到目标数据库。每次迁移包含 up 和 down 两个文件,既可以向前执行,也可以回滚。数据库驱动负责具体执行,排序和状态管理等核心逻辑则集中在主程序中。
- migrate 可以免费使用吗?用的什么许可证?
- migrate 以 Other 许可证开源。用于商业产品前,请先确认许可证条款。
- migrate 还在维护吗?
- 半年内有更新。migrate 最近一次提交是在 2026年9月9日。
- migrate 适合用来做什么?
- 为基于 PostgreSQL 或 MySQL 的 Go 服务管理版本化的表结构变更。 在 CI/CD 或容器部署流程中自动执行数据库迁移。 将迁移文件嵌入 Go 二进制文件,随应用一同发布。 用同一工具管理多种数据库引擎的结构变更。
- migrate 怎么安装和运行?
- 阅读入门指南并按其说明安装命令行工具 使用 Docker 运行迁移,并替换迁移目录占位符: docker run -v {{ migration dir }}:/migrations --network host migrate/migrate -path=/migrations/ -database postgres://localhost:5432/database up 2
- 在哪里获取 migrate?
- 源代码和安装说明在 GitHub 上:https://github.com/golang-migrate/migrate
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
一个用于数据库结构迁移的 CLI 与 Go 库,支持 SQL 文件和 Go 函数两种迁移方式。
免费的跨平台桌面 SQL 客户端与数据库工具,支持 100 多种数据库。
免费、本地优先的 AI 辅助数据库客户端与 SQL 工作台,支持 40 多种数据库。
跨平台 SQL 编辑器与数据库管理工具,支持 Linux、macOS 和 Windows,可连接 MySQL、PostgreSQL、SQLite 等多种数据库。
一个类型安全的 TypeScript SQL 查询构建器,支持表、列与结果类型的自动补全。