// the find
mattes/migrate
Database migrations. CLI and Golang library.
This is the original Go database migration library by mattes — now deprecated and superseded by golang-migrate/migrate, which is the community fork that's actively maintained. If you're evaluating this repo in 2026, you're looking at the wrong one; the successor has tens of thousands of stars and ongoing development.
- Clean source/driver separation lets you plug in migration files from S3, GCS, GitHub, or local filesystem without changing your database driver code
- The driver interface is small and well-defined, making it genuinely easy to add new database backends — the Spanner and CockroachDB drivers are proof that the abstraction held up
- CLI and library share the same core, so there's no behavior divergence between running migrations manually and running them from your app
- This repo is archived and has not received a commit since June 2018 — you should not adopt it; go to golang-migrate/migrate instead
- Several database drivers (MongoDB, Neo4j, CrateDB, Shell) are stubs with READMEs but no implementation in this repo — you'd hit a surprise wall if you needed them
- No transaction wrapping by default; a migration that fails partway through leaves the database in a dirty state, and the dirty-flag mechanism is a manual recovery step, not automatic rollback
- The go-bindata source driver depends on a tool that itself has been deprecated in favor of go:embed, so that entire integration path is dead weight