Sobre el proyecto

migrate es una herramienta de migración de bases de datos escrita en Go, utilizable como interfaz de línea de comandos o importada como biblioteca en proyectos Go. Fue bifurcada de mattes/migrate. Cómo funciona: migrate lee archivos de migración de una fuente configurada y los aplica en el orden correcto a una base de datos objetivo. El diseño mantiene los controladores de base de datos ligeros y "tontos" — migrate mismo coordina la lógica y valida el comportamiento, y los controladores evitan adivinar o corregir la entrada del usuario, fallando ante la duda. Las bases de datos compatibles incluyen PostgreSQL, PGX v4 y v5, Redshift, Ql, Cassandra/ScyllaDB, SQLite, SQLite3, SQLCipher, MySQL/MariaDB, Neo4j, MongoDB, CrateDB, Shell, Google Cloud Spanner, CockroachDB, YugabyteDB, ClickHouse, Firebird, MS SQL Server y rqlite. Las cadenas de conexión usan un formato de URL como dbdriver://usuario:contraseña@host:puerto/nombrebd?param1=true, y los caracteres reservados de URL deben estar codificados en porcentaje. Las fuentes de migración incluyen el sistema de archivos local, Go io/fs, Go-Bindata, pkger, GitHub, GitHub Enterprise, Bitbucket, GitLab, AWS S3 y Google Cloud Storage. La CLI es un envoltorio delgado alrededor de la biblioteca, maneja Ctrl+C (SIGINT) de manera elegante, y evita deliberadamente rutas de búsqueda de configuración, archivos de configuración o inyección mágica de variables de entorno. Una invocación básica se ve así: migrate -source file://ruta/a/migraciones -database postgres://localhost:5432/base up 2. También se publica una imagen Docker (migrate/migrate). Como biblioteca Go, la API se describe como estable y congelada para las versiones v3 y v4, usa módulos Go, soporta detenciones elegantes mediante un canal GracefulStop para ayudar a evitar la corrupción de la base de datos, permite usar tu propio registrador, usa flujos io.Reader internamente para bajo consumo de memoria, y se describe como segura para hilos sin fugas de goroutines. Se puede usar de forma independiente o con un cliente de base de datos existente mediante WithInstance. Los archivos de migración vienen en pares de migraciones up y down, por ejemplo 1481574547_create_users_table.up.sql y .down.sql. El proyecto apunta a una guía de inicio, tutoriales para CockroachDB y PostgreSQL, documentación de mejores prácticas para escribir migraciones, y una FAQ. La versión v3 ya no es compatible; v4 y master son las líneas compatibles.