Skip to content
SPECIFICTION
Get listed

golang-migrate vs Goose

golang-migrate

github.com

Goose

pressly.github.io

Side by side

Figuregolang-migrateGoose
Price fromFreeFree
Free planYesYes
Free trial——
Open source——
WindowsYesYes
macOSYesYes
LinuxYesYes
API—Yes
Self-hostedYesYes
Plans published11
Spec score · Database Migration Tools7.8 (#15)8.3 (#8)
Database supportListed database drivers include PostgreSQL, MySQL/MariaDB, SQLite, MongoDB, Neo4j, CockroachDB, and Google Cloud Spanner.The documented CLI drivers include ClickHouse, MSSQL, MySQL, PostgreSQL, SQLite, Turso, Vertica, and YDB.
LicenseThe project is distributed under the MIT License, which requires retaining the copyright and permission notices.The GitHub repository states that Goose is licensed under the MIT License.
Purposegolang-migrate reads database migrations from sources and applies them to a database in order.Goose is a database migration tool for managing database schemas with incremental SQL changes and/or Go functions.

Plans

golang-migrate

  • Open sourceFree

golang-migrate pricing →

Goose

  • GooseFree

Goose pricing →

In their own words

golang-migrate

golang-migrate reads database migrations from a source and applies them to a database in sequence. Each logical migration has an up file and a down file, and the tool can run as a command-line program or be imported as a Go library. Listed database drivers include PostgreSQL, MySQL/MariaDB, SQLite, MongoDB, Neo4j, CockroachDB, and Google Cloud Spanner. Migration sources include local files, embedded Go data, GitHub, GitLab, Bitbucket, AWS S3, and Google Cloud Storage. The CLI handles Ctrl+C gracefully and does not use config search paths, config files, or automatic environment-variable injection. The library uses io.Reader streams for low memory overhead, is described as thread-safe without goroutine leaks, and supports controlled stopping through a GracefulStop channel to help prevent database corruption. The project documents running the CLI in Docker with a mounted migration directory. golang-migrate is open source under the MIT License and costs nothing. The security policy marks master and 4.x as supported; 3.x and earlier are unsupported.

Visit github.com

Goose

Goose is a free, open-source database migration tool for managing schema changes through incremental SQL files and Go functions. It is available as both a command-line utility and a library. The CLI can apply, roll back, redo, reset, inspect, and version migrations, with documented drivers for ClickHouse, Microsoft SQL Server, MySQL, PostgreSQL, SQLite, Turso, Vertica, and YDB. SQL migration files use an up annotation and may include a down annotation; filenames can use timestamps or sequential numbers. Statements in a migration file run in one transaction by default, with an annotation for running them outside one. Go migration functions can use a transaction when given a transaction argument. Other listed capabilities include embedded and out-of-order migrations, data seeding, and environment variable substitution in SQL migrations. For library use, a provider accepts a database dialect, connection, migration filesystem, and optional configuration. The provider does not lock the database by default, so callers must arrange safe concurrent migrations or configure a session locker.

Visit pressly.github.io