Goose
pressly.github.io
What it is
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.
Spec sheet
- Purpose
- Goose is a database migration tool for managing database schemas with incremental SQL changes and/or Go functions.Read 7 Oct 2026 · pressly.github.io
- Platforms
- The installation guide documents prebuilt or source installation for macOS, Linux, and Windows.Read 7 Oct 2026 · pressly.github.io
- License
- The GitHub repository states that Goose is licensed under the MIT License.Read 7 Oct 2026 · github.com
- CLI and library
- The project is both a command-line utility and a library.Read 7 Oct 2026 · pressly.github.io
- Concurrency
- The provider does not lock the database during migrations by default, so callers must ensure migrations run safely; a session locker can coordinate them.Read 7 Oct 2026 · pressly.github.io
- Concurrency limitation
- By default, the provider does not lock the database during migrations, so the caller must ensure migrations are run safely; a session locker can be configured.Read 7 Oct 2026 · pressly.github.io
- Database driver responsibility
- When using the provider, callers are responsible for matching the SQL dialect to the database driver.Read 7 Oct 2026 · pressly.github.io
- Database support
- The documented CLI drivers include ClickHouse, MSSQL, MySQL, PostgreSQL, SQLite, Turso, Vertica, and YDB.Read 7 Oct 2026 · pressly.github.io
- Driver caveat
- The README warns that ClickHouse support is limited to some deployment modes and may require careful configuration or workarounds.Read 7 Oct 2026 · github.com
- Go migrations
- Go migration functions can run within a SQL transaction when given a transaction argument.Read 7 Oct 2026 · pressly.github.io
- Go requirement
- Building from source requires Go 1.16 or later.Read 7 Oct 2026 · pressly.github.io
- Library configuration
- A Goose provider accepts a database dialect, a database connection, a filesystem for migration files, and optional configuration.Read 7 Oct 2026 · pressly.github.io
- Library integration
- The Goose provider accepts a database connection and filesystem abstraction, including directory or embedded filesystems.Read 7 Oct 2026 · pressly.github.io
- Migration controls
- The CLI can apply, roll back, redo, reset, inspect, and version database migrations.Read 7 Oct 2026 · pressly.github.io
- Migration formats
- It manages database schemas with incremental SQL changes and Go migration functions.Read 7 Oct 2026 · pressly.github.io
- Migration options
- The project README lists embedded migrations, out-of-order migrations, data seeding, and environment variable substitution in SQL migrations.Read 7 Oct 2026 · github.com
- Migration transactions
- Statements in a migration file run in one transaction by default, with an annotation to run them outside a transaction.Read 7 Oct 2026 · pressly.github.io
- SQL migration format
- SQL migration files use an up annotation and may include an optional down annotation; filenames use a timestamp or sequential number.Read 7 Oct 2026 · pressly.github.io
- Supported database drivers
- The CLI lists ClickHouse, Microsoft SQL Server, MySQL, PostgreSQL, SQLite, Turso, Vertica, and YDB drivers.Read 7 Oct 2026 · pressly.github.io
Plans and prices
Strong points and limits
Strong points
- Free and open source under the MIT License
- CLI can apply, roll back, redo, reset, inspect, and version
- Supports SQL and Go migration formats
- Lists eight database drivers
Limits
- Provider does not lock migrations by default
- Callers must match the library dialect to its driver
- ClickHouse support has deployment-mode caveats
- Building from source requires Go 1.16 or later
Who it suits
Goose suits developers who need to manage database schema migrations through SQL, Go functions, or both. Library users should be prepared to match the dialect to the database driver and coordinate concurrent migration runs.
Verdict
Goose combines a migration CLI with a configurable library and supports a broad range of migration workflows and listed drivers. Safe concurrency requires extra attention because the provider does not lock the database by default.
Where Specifiction places it
- Database Migration Tools#8 of 328.3