A database migration tool and library for Go, supporting multiple databases and sources via CLI or programmatic API.
Migrate is a database schema migration tool and library written in Go. It manages the application of incremental, versioned changes to a database schema, solving the problem of tracking and deploying database changes reliably across different environments (development, staging, production). It reads migration files from various sources and applies them in the correct order to a target database.
Go developers and DevOps engineers who need a reliable, programmatic way to manage database schema changes for applications using PostgreSQL, MySQL, SQLite, MongoDB, or other supported databases.
Developers choose Migrate for its extensive database and source driver support, its dual nature as both a CLI tool and an importable library, and its robust design focused on preventing corruption and handling operations gracefully.
Database migrations. CLI and Golang library.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports a wide range of databases including PostgreSQL, MySQL, MongoDB, and CockroachDB via a driver-based architecture, allowing unified migrations across SQL and NoSQL systems.
Reads migrations from filesystems, embedded binaries (e.g., go-bindata), and remote sources like GitHub and AWS S3, offering versatility for different deployment workflows.
Can be used as a standalone CLI for scripting or imported as a Go library for embedding migrations directly into applications, as shown in the README code examples.
Handles interrupts gracefully (SIGINT) and is designed to prevent database corruption with thread-safe operations, emphasizing reliability in production.
Database URLs require manual escaping of special characters, which the README highlights with Python snippets, adding configuration overhead and potential for errors.
Primarily tailored for Go ecosystems, making integration less seamless for teams using other languages without additional wrappers or effort.
Some drivers, like SQLite3, are marked with 'todo' issues in the README, indicating potential instability or incomplete features for certain databases.