amacneil/dbmate

🚀 A lightweight, framework-agnostic database migration tool.

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 50 minutes ago
Added to GitGenius on June 23rd, 2026
Created on November 25th, 2015
Open Issues & Pull Requests: 33 (+0)
GitHub issues: Enabled
Number of forks: 379
Total Stargazers: 7,405 (+0)
Total Subscribers: 27 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 33.7 hours
Mean response time: 26.4 days
90th percentile: 32.1 days
Tracked items: 57

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 17
New in 7 days: 0
Closed in 7 days: 4
Avg open age: 431 days
Stale 30+ days: 15
Stale 90+ days: 13

Recent activity

Opened in 7 days: 0
Closed in 7 days: 1
Comments in 7 days: 1
Events in 7 days: 8

Top labels

  • bug (23)
  • feature request (13)
  • needs more info (6)
  • go (3)
  • help wanted (3)
  • needs work (3)
  • dependencies (2)
  • breaking change (1)

Most active issues this week

Sign in to see which issues are moving.
Sign in

Detailed Description

Dbmate is a lightweight, framework-agnostic database migration tool written in Go that enables developers to keep database schemas synchronized across multiple developers and production servers. It functions as a standalone command-line tool that works independently of any specific programming language or framework, making it particularly valuable for teams maintaining multiple services written in different languages such as Go, Node.js, Python, Ruby, PHP, Rust, and C++.

The tool supports multiple database systems including MySQL, MariaDB, PostgreSQL, SQLite, ClickHouse, BigQuery, and Spanner. Migrations are written in plain SQL and are timestamp-versioned to prevent version number conflicts when multiple developers work simultaneously. Each migration runs atomically within a transaction, ensuring database consistency. The tool can create and drop databases, which proves especially useful during development and testing phases. Dbmate automatically maintains a schema.sql file that can be committed to version control, allowing teams to easily track and diff schema changes across git history.

Database connections are configured through environment variables, with DATABASE_URL being the default. The tool supports reading configuration from .env files, streamlining setup across team members. Dbmate distributes as a single self-contained binary available through multiple installation methods including NPM, Homebrew for macOS, direct binary installation for Linux, Scoop for Windows, and Docker images published to GitHub Container Registry.

The command-line interface offers comprehensive options for controlling migration behavior. Users can specify database URLs directly or through environment variables, choose specific drivers, define custom migration directories and table names, and control schema file generation. Additional flags enable strict mode to prevent out-of-order migrations, database availability waiting with configurable timeouts, and environment variable file specification.

Connection configuration varies by database type. PostgreSQL supports TLS requirements, Unix socket connections, passwordless authentication, and schema path specification. MySQL and MariaDB support Unix socket connections. SQLite uses filesystem paths with support for both relative and absolute file locations. ClickHouse offers native TCP and HTTP/HTTPS protocol options with cluster support through query parameters. BigQuery requires project ID and dataset specification with Google Cloud authentication.

The project maintains connections with other significant repositories including vuejs/vue, travis-ci/travis-ci, and remotion-dev/remotion through overlapping contributor networks, indicating its integration within broader development ecosystems.