# golang-migrate/migrate

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/golang-migrate-migrate).**

18,118 stars · 1,551 forks · Go · other

## Links

- GitHub: https://github.com/golang-migrate/migrate
- awesome-repositories: https://awesome-repositories.com/repository/golang-migrate-migrate.md

## Topics

`aws-s3` `cassandra` `database` `databases` `go` `golang` `google-cloud-spanner` `google-cloud-storage` `hacktoberfest` `mariadb` `migration` `migrations` `mongodb` `mysql` `neo4j` `postgres` `spanner` `sql` `sqlite`

## Description

This project is a command-line utility designed to manage database schema versioning and automate incremental schema updates. It functions as a version control system for database structures, ensuring consistency across environments by tracking applied migrations in a dedicated metadata table and executing scripts in a sequential, reliable manner.

The tool distinguishes itself through a driver-based abstraction layer that supports a wide range of database engines, including various SQL and distributed cloud databases. It provides robust concurrency control through advisory locking, which prevents conflicting schema changes during simultaneous deployment attempts. To ensure data integrity, the system supports atomic execution by wrapping migration scripts in transactions, while also offering the flexibility to execute custom shell scripts or complex multi-statement files using delimiter-based parsing.

The platform includes comprehensive configuration options for managing database connections, retry logic for transient errors, and the customization of migration tracking tables. It is designed to integrate into automated deployment pipelines, providing a unified interface for schema management regardless of the underlying database technology.

## Tags

### Data & Databases

- [Database Schema Migrations](https://awesome-repositories.com/f/data-databases/database-management-systems/database-systems-management/database-management/database-schema-migrations.md) — Automates the application of versioned SQL schema updates to maintain structural consistency across database environments.
- [Database Migrations](https://awesome-repositories.com/f/data-databases/database-migrations.md) — Automates incremental schema updates and tracks version history to ensure consistency across environments. ([source](https://github.com/golang-migrate/migrate/tree/master/database/crate))
- [Automated Migrations](https://awesome-repositories.com/f/data-databases/automated-migrations.md) — Executes automated schema updates as part of a deployment pipeline to keep database structures in sync.
- [Database Versioning](https://awesome-repositories.com/f/data-databases/database-versioning.md) — Manages incremental changes to database structures by tracking applied versions across environments.
- [Database Migration Management](https://awesome-repositories.com/f/data-databases/database-migration-management.md) — Manages and automates schema updates across environments using versioned scripts and concurrency-safe advisory locking.
- [Advisory Locking Mechanisms](https://awesome-repositories.com/f/data-databases/migration-management/advisory-locking-mechanisms.md) — Prevents conflicting schema changes during simultaneous deployment attempts by utilizing advisory locks. ([source](https://github.com/golang-migrate/migrate/tree/master/database/pgx))
- [Schema Migrations](https://awesome-repositories.com/f/data-databases/schema-migrations.md) — Records the current version of the database schema in a dedicated table to ensure sequential application of migrations. ([source](https://github.com/golang-migrate/migrate/tree/master/database/crate))
- [Database Transactions](https://awesome-repositories.com/f/data-databases/database-transactions.md) — Ensures database integrity during schema updates by wrapping migration scripts in atomic transactions.
- [ClickHouse Connectors](https://awesome-repositories.com/f/data-databases/database-connectivity/clickhouse-connectors.md) — Connects to ClickHouse analytical databases to manage schema migration state. ([source](https://github.com/golang-migrate/migrate/tree/master/database/clickhouse))
- [CockroachDB Connectors](https://awesome-repositories.com/f/data-databases/database-connectivity/cockroachdb-connectors.md) — Establishes secure connections to CockroachDB clusters for safe schema migration operations. ([source](https://github.com/golang-migrate/migrate/tree/master/database/cockroachdb))
- [Firebird Connectors](https://awesome-repositories.com/f/data-databases/database-connectivity/firebird-connectors.md) — Connects to Firebird databases using custom authentication and wire encryption settings. ([source](https://github.com/golang-migrate/migrate/tree/master/database/firebird))
- [MySQL Connectors](https://awesome-repositories.com/f/data-databases/database-connectivity/mysql-connectors.md) — Connects to MySQL databases with support for encryption and custom connection configurations. ([source](https://github.com/golang-migrate/migrate/tree/master/database/mysql))
- [PostgreSQL Connectors](https://awesome-repositories.com/f/data-databases/database-connectivity/postgresql-connectors.md) — Connects to PostgreSQL instances using secure connection strings and custom schema search paths. ([source](https://github.com/golang-migrate/migrate/tree/master/database/pgx))
- [Concurrency Control](https://awesome-repositories.com/f/data-databases/concurrency-control.md) — Prevents conflicting schema changes during simultaneous deployments using database-level advisory locks.
- [Migration Execution Engines](https://awesome-repositories.com/f/data-databases/data-integration-synchronization/data-migration/migration-execution-engines.md) — Splits migration scripts into individual statements using delimiters to support complex schema modifications. ([source](https://github.com/golang-migrate/migrate/tree/master/database/clickhouse))
- [Distributed Databases](https://awesome-repositories.com/f/data-databases/database-management-systems/database-engines/distributed-databases.md) — Supports connections to distributed database instances to apply schema changes across multiple nodes. ([source](https://github.com/golang-migrate/migrate/tree/master/database/rqlite))
- [Database Connection Configurations](https://awesome-repositories.com/f/data-databases/database-management-systems/database-systems-management/connection-transaction-management/database-connection-configurations.md) — Configures database connection parameters including authentication, security certificates, and timeouts. ([source](https://github.com/golang-migrate/migrate/tree/master/database/cassandra))
- [Migration Configurations](https://awesome-repositories.com/f/data-databases/migration-configurations.md) — Configures advisory locking strategies and timeouts to manage concurrent migration access. ([source](https://github.com/golang-migrate/migrate/tree/master/database/mongodb))
- [Migration Execution](https://awesome-repositories.com/f/data-databases/migration-execution.md) — Manages migration execution behavior including custom table names and transaction controls. ([source](https://github.com/golang-migrate/migrate/tree/master/database/pgx))

### Software Engineering & Architecture

- [Database Abstraction Layers](https://awesome-repositories.com/f/software-engineering-architecture/database-abstraction-layers.md) — Provides a unified interface layer to interact with various SQL and distributed database engines.
- [Transactional Migration Managers](https://awesome-repositories.com/f/software-engineering-architecture/transactional-migration-managers.md) — Wraps migration scripts in atomic transactions to ensure schema changes either fully succeed or roll back.
- [Version Tracking](https://awesome-repositories.com/f/software-engineering-architecture/contract-upgradeability/version-tracking.md) — Maintains a dedicated metadata table to track applied schema versions and prevent duplicate execution.

### DevOps & Infrastructure

- [Database Deployment Automation](https://awesome-repositories.com/f/devops-infrastructure/database-deployment-automation.md) — Prevents conflicting schema changes during simultaneous deployment attempts by utilizing advisory locks and state management.
