Sobre o projeto

migrate é uma ferramenta de migração de banco de dados escrita em Go, utilizável tanto como interface de linha de comando quanto importada como biblioteca em projetos Go. Foi bifurcada de mattes/migrate. Como funciona: o migrate lê arquivos de migração de uma fonte configurada e os aplica na ordem correta a um banco de dados de destino. O design mantém os drivers de banco de dados leves e 'burros' — o próprio migrate coordena a lógica e valida o comportamento, e os drivers evitam adivinhar ou corrigir a entrada do usuário, falhando em caso de dúvida. Os bancos de dados suportados incluem PostgreSQL, PGX v4 e v5, Redshift, Ql, Cassandra/ScyllaDB, SQLite, SQLite3, SQLCipher, MySQL/MariaDB, Neo4j, MongoDB, CrateDB, Shell, Google Cloud Spanner, CockroachDB, YugabyteDB, ClickHouse, Firebird, MS SQL Server e rqlite. As strings de conexão usam um formato de URL como dbdriver://username:password@host:port/dbname?param1=true, e caracteres reservados de URL devem ser codificados em percentual. As fontes de migração incluem o sistema de arquivos local, Go io/fs, Go-Bindata, pkger, GitHub, GitHub Enterprise, Bitbucket, GitLab, AWS S3 e Google Cloud Storage. A CLI é um wrapper fino em torno da biblioteca, lida com Ctrl+C (SIGINT) graciosamente e evita deliberadamente caminhos de busca de configuração, arquivos de configuração ou injeção mágica de variáveis de ambiente. Uma invocação básica parece: migrate -source file://path/to/migrations -database postgres://localhost:5432/database up 2. Uma imagem Docker (migrate/migrate) também é publicada. Como biblioteca Go, a API é descrita como estável e congelada para as versões v3 e v4, usa módulos Go, suporta paradas graciosas via um canal GracefulStop para ajudar a evitar corrupção de banco de dados, permite trazer seu próprio logger, usa fluxos io.Reader internamente para baixa sobrecarga de memória e é descrita como thread-safe sem vazamentos de goroutine. Pode ser usada de forma autônoma ou com um cliente de banco de dados existente via WithInstance. Os arquivos de migração vêm em pares de migrações up e down, por exemplo 1481574547_create_users_table.up.sql e .down.sql. O projeto aponta para um guia de início rápido, tutoriais para CockroachDB e PostgreSQL, documentação de melhores práticas para escrever migrações e um FAQ. A versão v3 não é mais suportada; v4 e master são as linhas suportadas.