dbmate vs FluentMigrator
dbmate
github.comFluentMigrator
fluentmigrator.github.ioSide by side
| Figure | dbmate | FluentMigrator |
|---|---|---|
| Price from | Free | Free |
| Free plan | Yes | Yes |
| Free trial | — | — |
| Open source | — | — |
| Windows | Yes | Yes |
| macOS | Yes | Yes |
| Linux | Yes | Yes |
| Self-hosted | Yes | Yes |
| Plans published | 1 | 1 |
| Spec score · Database Migration Tools | 8.6 (#3) | 8.2 (#10) |
| Database support | The README lists MySQL, MariaDB, PostgreSQL, SQLite, and ClickHouse as supported databases. | The documentation lists providers including SQL Server, PostgreSQL, MySQL, SQLite, Oracle, Firebird, IBM DB2, SAP HANA, Snowflake, and Redshift. |
| Distribution | The README documents installation through NPM, Homebrew, Scoop, a Linux binary, and Docker images published to GitHub Container Registry. | The repository says releases are stored on NuGet and prerelease CI builds on Azure Artifacts. |
| License | The repository includes an MIT license. | The project is released under the Apache-2.0 License. |
| Purpose | Dbmate is a database migration tool that keeps database schemas in sync across developers and production servers. | FluentMigrator is a .NET framework for managing database schema changes through version-controlled C# migrations. |
| Support | The repository README links to a discussion of alternatives and a contribution guide, but the opened page does not specify a support service or response time. | The project points users to GitHub Discussions, bug reports and feature requests, and the fluent-migrator Stack Overflow tag. |
Plans
In their own words
dbmate
dbmate is a free, open-source command-line tool for keeping database schemas in sync across developers and production servers. It works independently of application language and can be used with Go, Node.js, Python, Ruby, PHP, Rust, C++, and other languages or frameworks. Migrations are plain SQL in timestamp-versioned files. Commands create, apply, and roll back migrations, check status, dump or load a schema, and wait for a database server. The project lists MySQL, MariaDB, PostgreSQL, SQLite, and ClickHouse, and documents BigQuery connections and Spanner support for databases using the PostgreSQL dialect. Migrations run atomically in a transaction by default when the database supports transactions, though individual migration blocks can opt out. dbmate can maintain a schema.sql dump for source-control review and Git diffs; creating dumps relies on database client tools such as pg_dump, mysqldump, or sqlite3. It reads DATABASE_URL by default and can load environment variables from a .env file. Installation options include NPM, Homebrew, Scoop, a Linux binary, and Docker images. Go applications can use it as a library, and Go embed can package migrations into an application binary.
FluentMigrator
FluentMigrator is a free .NET framework for managing database schema changes with version-controlled C# migrations. Its fluent C# API defines Up and Down methods for applying changes and rolling them back. The project lists providers for SQL Server, PostgreSQL, MySQL, SQLite, and Oracle, among others; provider packages are selected separately. Migrations can run inside an application, with the Migrate.exe console tool, or through dotnet-fm, which integrates with the cross-platform .NET CLI. By default, FluentMigrator creates a VersionInfo table to record completed migrations. Command-line runners can preview generated SQL without executing it, and the CLI can validate migrations before execution. The project documents .NET dependency injection integration and CI/CD examples for GitHub Actions, Azure DevOps, and Jenkins. The Quick Start calls for .NET 8.0 or later, a supported database, and basic C# and database knowledge. FluentMigrator is released under the Apache-2.0 License, with releases distributed through NuGet.