Doctrine Migrations vs Evolve
Doctrine Migrations
doctrine-project.orgEvolve
github.comSide by side
| Figure | Doctrine Migrations | Evolve |
|---|---|---|
| Price from | Free | Free |
| Free plan | Yes | Yes |
| Free trial | — | — |
| Open source | — | — |
| Windows | — | Yes |
| Linux | Yes | Yes |
| Self-hosted | Yes | — |
| Plans published | 1 | 1 |
| Spec score · Database Migration Tools | 8.5 (#6) | 7.8 (#14) |
| Automation | The `--no-interaction` option allows migrations to run without additional prompts. | It automates database changes and keeps them synchronized across environments and development teams, including for continuous integration and delivery. |
| Purpose | Doctrine Migrations adds database schema versioning and helps deploy schema changes. | Evolve is a cross-platform database migration tool inspired by Flyway that uses plain SQL scripts. |
| Support | The documentation directs users to the Doctrine mailing list, Slack, GitHub bug reporting, and Stack Overflow for help. | The maintainer says the project is personal, free-time, and unfunded, and invites users and companies to support it through GitHub Sponsors; company donations are mentioned as a way to receive priority support. |
| Transactions | The documentation covers all-or-nothing transactions and using or not using transactions. | By default, each migration runs in a separate database transaction; the TransactionMode option can instead commit or roll back a group of scripts together. |
Plans
In their own words
Doctrine Migrations
Doctrine Migrations is a free, self-hosted PHP library for versioning database schemas and deploying changes in a reviewable, testable way. Built on Doctrine DBAL and ORM, it can generate migration code by comparing a database schema with ORM mapping information, with documentation covering diffing with or without the ORM. Console commands show migration status, perform dry runs, execute one or more migrations, and revert changes. Generated SQL can be written to a file with --write-sql instead of applied directly, while --no-interaction supports unattended execution. Transaction controls cover all-or-nothing behavior and running with or without transactions. Install it through Composer, which provides a doctrine-migrations console application, or download a PHAR from GitHub releases. Doctrine lists integrations for Symfony, Zend, Laravel, Silex, and Nette. Version 3.9.8 is stable; 3.8 and earlier are unmaintained.
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.