Freedom251 › Database Migration Tools
Goose

What Goose is
Goose is an open-source database migration tool for managing schema changes with incremental SQL updates and Go migration functions. It is available as both a command-line utility and a library, with platforms listed for API, Linux, macOS, self-hosted use, and Windows. Its CLI can apply, roll back, redo, reset, inspect, and version migrations. 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 available to run them outside one. Go migration functions can run within a SQL transaction when given a transaction argument. The CLI lists drivers for ClickHouse, Microsoft SQL Server, MySQL, PostgreSQL, SQLite, Turso, Vertica, and YDB. Other listed options include embedded and out-of-order migrations, data seeding, and environment-variable substitution in SQL migrations. As a library, Goose uses a provider configured with a database dialect, connection, filesystem, and optional settings. By default, the provider does not lock the database during migrations, so safe coordination is the caller’s responsibility.
Who it suits
Goose suits developers who need command-line or library-based database migrations and can coordinate safe migration runs. It supports SQL and Go migration approaches across its listed database drivers.
What it does well
- CLI can apply, roll back, and inspect migrations.
- Supports SQL files and Go migration functions.
- Lists drivers for eight database systems.
- Offers embedded and out-of-order migrations.
What to know first
- Provider does not lock migrations by default.
- Building from source requires Go 1.16 or later.
- ClickHouse support has deployment-mode caveats.
Limits
The provider does not lock the database during migrations by default, so callers must ensure runs are safe or configure a session locker. ClickHouse support is limited to some deployment modes and may require careful configuration or workarounds.
Plans
| Plan | Billed and limits | Price |
|---|---|---|
| Goose | Open-source database migration tool | Free |
As pressly.github.io lists them, read 7 Oct 2026. The maker's own page has the final word.
Getting started
- Open the Goose website.
- Choose the command-line utility or the Go library.
- For CLI use, select a listed database driver and prepare migration files with an up annotation.
- For library use, configure a database dialect, connection, migration filesystem, and optional settings.
- Coordinate safe migration runs or configure a session locker before concurrent runs.
Verdict
Goose provides schema migration controls in both a CLI and a library, with a broad documented driver list. Teams using the provider need to arrange safe concurrency unless they configure a session locker.
Questions
How much does Goose cost?
Goose is free and open source. Its listed plan is free.
Which databases does the CLI support?
The listed drivers are ClickHouse, Microsoft SQL Server, MySQL, PostgreSQL, SQLite, Turso, Vertica, and YDB.
Can Goose roll back migrations?
Yes. The CLI can roll back and redo migrations, as well as apply, reset, inspect, and version them.
What migration formats does Goose support?
It manages schemas with incremental SQL changes and Go migration functions. SQL migration files use an up annotation and may include a down annotation.
Is Goose open source?
Yes. The GitHub repository states that Goose is licensed under the MIT License.
What platforms are listed for Goose?
The listed platforms are API, Linux, macOS, self-hosted, and Windows.
Facts from Goose's own pages
- CLI and library
- The project is both a command-line utility and a library. · pressly.github.io, 7 Oct 2026
- 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. · pressly.github.io, 7 Oct 2026
- 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. · pressly.github.io, 7 Oct 2026
- Database driver responsibility
- When using the provider, callers are responsible for matching the SQL dialect to the database driver. · pressly.github.io, 7 Oct 2026
- Database support
- The documented CLI drivers include ClickHouse, MSSQL, MySQL, PostgreSQL, SQLite, Turso, Vertica, and YDB. · pressly.github.io, 7 Oct 2026
- Driver caveat
- The README warns that ClickHouse support is limited to some deployment modes and may require careful configuration or workarounds. · github.com, 7 Oct 2026
- Go migrations
- Go migration functions can run within a SQL transaction when given a transaction argument. · pressly.github.io, 7 Oct 2026
- Go requirement
- Building from source requires Go 1.16 or later. · pressly.github.io, 7 Oct 2026
- Library configuration
- A Goose provider accepts a database dialect, a database connection, a filesystem for migration files, and optional configuration. · pressly.github.io, 7 Oct 2026
- Library integration
- The Goose provider accepts a database connection and filesystem abstraction, including directory or embedded filesystems. · pressly.github.io, 7 Oct 2026
- License
- The GitHub repository states that Goose is licensed under the MIT License. · github.com, 7 Oct 2026
- Migration controls
- The CLI can apply, roll back, redo, reset, inspect, and version database migrations. · pressly.github.io, 7 Oct 2026
- Migration formats
- It manages database schemas with incremental SQL changes and Go migration functions. · pressly.github.io, 7 Oct 2026
- Migration options
- The project README lists embedded migrations, out-of-order migrations, data seeding, and environment variable substitution in SQL migrations. · github.com, 7 Oct 2026
- Migration transactions
- Statements in a migration file run in one transaction by default, with an annotation to run them outside a transaction. · pressly.github.io, 7 Oct 2026
- Platforms
- The installation guide documents prebuilt or source installation for macOS, Linux, and Windows. · pressly.github.io, 7 Oct 2026
- Purpose
- Goose is a database migration tool for managing database schemas with incremental SQL changes and/or Go functions. · pressly.github.io, 7 Oct 2026
- SQL migration format
- SQL migration files use an up annotation and may include an optional down annotation; filenames use a timestamp or sequential number. · pressly.github.io, 7 Oct 2026
- Supported database drivers
- The CLI lists ClickHouse, Microsoft SQL Server, MySQL, PostgreSQL, SQLite, Turso, Vertica, and YDB drivers. · pressly.github.io, 7 Oct 2026
Where Goose stands on Freedom251
- Database Migration Tools#9 of 32