Skip to content
SPECIFICTION
Get listed

Evolve vs Goose

Evolve

github.com

Goose

pressly.github.io

Side by side

FigureEvolveGoose
Price fromFreeFree
Free planYesYes
Free trial——
Open source——
WindowsYesYes
macOS—Yes
LinuxYesYes
API—Yes
Self-hosted—Yes
Plans published11
Spec score · Database Migration Tools7.8 (#14)8.3 (#8)
PurposeEvolve is a cross-platform database migration tool inspired by Flyway that uses plain SQL scripts.Goose is a database migration tool for managing database schemas with incremental SQL changes and/or Go functions.

Plans

Evolve

  • EvolveFree

Evolve pricing →

Goose

  • GooseFree

Goose pricing →

In their own words

Evolve

Evolve is a free, open-source database migration tool that applies plain SQL scripts to synchronize changes across environments and development teams, including continuous integration and delivery. It is available as a .NET library, .NET tool, or standalone CLI. Listed databases include PostgreSQL, SQL Server, SQLite, MySQL, MariaDB, Cassandra, and CockroachDB. Versioned migrations run once; repeatable migrations run again when their contents change. Evolve records migration names and checksums in a metadata table and checks them whenever it runs. Commands are migrate, erase, repair, and info. Each migration normally uses its own transaction, while TransactionMode can group scripts for commit or rollback. Cluster mode uses a session-level lock to coordinate nodes. The standalone CLI supports x64 Windows and Linux without external dependencies. The library requires .NET 4.7.2+ or .NET Standard 2.0/.NET 5.0; the tool requires .NET Core SDK 3.0 or later.

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