golang-migrate/migrate

Database migrations. CLI and Golang library.

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 38 minutes ago
Added to GitGenius on September 3rd, 2026
Created on January 19th, 2018
Open Issues & Pull Requests: 491 (+0)
GitHub issues: Enabled
Number of forks: 1,607
Total Stargazers: 18,900 (+0)
Total Subscribers: 88 (+0)

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Issue API getrepoissuespagesummary failed: 429 Rate limit exceeded. Please try again later.

Detailed Description

migrate is a database migration tool available as both a CLI and a Go library.

The tool reads migration files from various sources and applies them to databases in the correct order. It uses a driver-based architecture where database drivers are intentionally kept simple and "dumb"—the core migrate logic handles orchestration and ensures correctness. Drivers do not make assumptions about user input or attempt to correct it; when uncertain, they fail rather than guess. Migration sources can be read from filesystems, embedded binary data, remote repositories like GitHub and GitLab, or cloud storage services including AWS S3 and Google Cloud Storage.

The tool supports a wide range of databases including PostgreSQL, MySQL, MariaDB, SQLite, MongoDB, Neo4j, Cassandra, Google Cloud Spanner, CockroachDB, MS SQL Server, and many others. It can be used as a standalone CLI with straightforward command-line invocation and no configuration file magic, or imported directly into Go projects as a library. The CLI handles graceful shutdown on interrupt signals. Database connections are specified via URLs with driver-dependent formats, and the tool properly handles URL encoding of reserved characters in connection strings.

Adopt this tool if you need to manage schema changes across multiple database systems or want migration logic embedded in a Go application. It suits projects that value explicit, fail-safe behavior over convenience features. The tool was forked from an earlier project and maintains that lineage.

The project receives issue reports primarily from its user base rather than from core maintainers, indicating substantial real-world adoption. Responses to issues and pull requests typically arrive within one to two weeks. Work in the issue tracker centers on database-specific concerns, backwards compatibility, and bug fixes.