dbmate vs Sqitch
dbmate
github.comSqitch
sqitch.orgSide by side
| Figure | dbmate | Sqitch |
|---|---|---|
| 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) | 7.9 (#13) |
| Database support | The README lists MySQL, MariaDB, PostgreSQL, SQLite, and ClickHouse as supported databases. | Sqitch supports PostgreSQL, YugabyteDB, CockroachDB, SQLite, MySQL, MariaDB, Oracle, Firebird, Vertica, Exasol, Snowflake, and ClickHouse. |
| License | The repository includes an MIT license. | The manual grants permission to use, modify, publish, distribute, sublicense, and sell the software subject to its stated condition, and provides it without warranty. |
| Purpose | Dbmate is a database migration tool that keeps database schemas in sync across developers and production servers. | Sqitch is a database change management application for framework-free development and dependable deployment. |
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.
Sqitch
Sqitch is a database change management application for deploying and tracking database changes. It is a standalone system, not tied to a framework, ORM, database engine, or development environment. Changes are written as scripts native to the chosen database, and can declare dependencies—including changes in other Sqitch projects—to establish execution order. A plan file and Merkle tree pattern support deployment integrity without requiring numbered change names. Sqitch can deploy and revert changes, report status and history, and run optional verification scripts. Its manual lists PostgreSQL, YugabyteDB, CockroachDB, SQLite, MySQL, MariaDB, Oracle, Firebird, Vertica, Exasol, Snowflake, and ClickHouse. Connecting and executing scripts requires the database's native command-line client and connector libraries. Installation options include source, Docker, Linux distribution packages, macOS Homebrew, and Windows instructions. Sqitch is free, with a license permitting use and distribution, and is available for Linux, macOS, Windows, and self-hosted use.