- Home
- Database Migration Tools
- dbmate
dbmate
What it is
dbmate is a free, open-source database migration tool for keeping schemas aligned across developers and production servers. Its standalone command-line interface works with Go, Node.js, Python, Ruby, PHP, Rust, C++, and other languages or frameworks. Migrations use plain SQL files with timestamp-based versions. The project lists MySQL, MariaDB, PostgreSQL, SQLite, and ClickHouse, and documents BigQuery connections and Spanner support for databases using the PostgreSQL dialect. Commands cover creating, applying, and rolling back migrations, checking status, managing schema dumps, and waiting for a database server. When supported by the database, each migration runs in a transaction by default, though individual migrations can change that behavior. dbmate can keep a schema.sql file for source control review; creating a dump depends on database client tools such as pg_dump, mysqldump, or sqlite3. It reads DATABASE_URL by default and can load variables from a .env file. It is available for Linux, macOS, Windows, and self-hosted use, with installation options including NPM, Homebrew, Scoop, a Linux binary, and Docker images. Go applications can also use it as a library, and Go embed can package migrations into an application binary.
For and against
For
- Free and open source under the MIT License.
- Supports rollback and migration status checks.
- Can maintain schema.sql for source control review.
- Works with multiple languages and databases.
- Can embed migrations in Go application binaries.
Against
- Spanner schema dumps are not supported.
- Schema dumps require database client tools.
The verdict
dbmate combines SQL migrations, rollback tools, and schema snapshots in a standalone command-line utility. Check its database support and the client-tool requirement for schema dumps before choosing it.
Who it suits
dbmate suits developers and teams who want SQL-based migrations across multiple languages and supported databases. It is also an option for Go applications that need embedded migrations.
Plans and prices
dbmate
Open-source database migration tool · no paid SaaS upsell stated
Read 5 Oct 2026 · github.com
On the record
- Additional database support
- The README also documents BigQuery connections and Spanner support limited to databases using the PostgreSQL dialect.github.com · read 5 Oct 2026
- Commands
- Its commands include creating, applying, and rolling back migrations, checking migration status, dumping or loading a schema, and waiting for a database server.github.com · read 5 Oct 2026
- Configuration
- Dbmate reads DATABASE_URL by default and has built-in support for loading environment variables from a .env file.github.com · read 5 Oct 2026
- Databases
- The README lists MySQL, MariaDB, PostgreSQL, SQLite, and ClickHouse as supported databases.github.com · read 5 Oct 2026
- Database support
- The README lists MySQL, MariaDB, PostgreSQL, SQLite, and ClickHouse as supported databases.github.com · read 5 Oct 2026
- Distribution
- The README documents installation through NPM, Homebrew, Scoop, a Linux binary, and Docker images published to GitHub Container Registry.github.com · read 5 Oct 2026
- Embedding
- Dbmate can be used as a library in Go applications, and migrations can be embedded into an application binary using Go embed.github.com · read 5 Oct 2026
- Framework support
- It is a standalone command-line tool usable with Go, Node.js, Python, Ruby, PHP, Rust, C++, or other languages and frameworks.github.com · read 5 Oct 2026
- Language independent
- The standalone command line tool can be used with Go, Node.js, Python, Ruby, PHP, Rust, C++, or other languages and frameworks.github.com · read 5 Oct 2026
- License
- The repository includes an MIT license.github.com · read 5 Oct 2026
- Limit
- The README says Spanner schema dumps are not supported because pg_dump uses functions Spanner does not provide.github.com · read 5 Oct 2026
- Migration transactions
- Migrations run atomically inside a transaction by default when the database supports transactions, and migration blocks can opt out.github.com · read 5 Oct 2026
- Purpose
- Dbmate is a database migration tool that keeps database schemas in sync across developers and production servers.github.com · read 5 Oct 2026
- SaaS
- The README says dbmate does not try to upsell users on a SaaS service.github.com · read 5 Oct 2026
- Schema snapshots
- Dbmate can keep a schema.sql dump updated for review in source control; dumping relies on database client tools such as pg_dump, mysqldump, or sqlite3.github.com · read 5 Oct 2026
- Schema tracking
- Dbmate can save a schema.sql file so schema changes can be diffed in Git.github.com · read 5 Oct 2026
- Security and company details
- The opened README and repository page do not state security certifications, support terms, company headquarters, or a founding date.github.com · read 5 Oct 2026
- Security page
- The repository's GitHub Security page is available, but the opened page does not state a security or compliance certification.github.com · read 5 Oct 2026