Saltar al contenido principal

Introducción

[Traducción Beta No Oficial]

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

Flujos de migración de esquema

Ent admite dos flujos de trabajo diferentes para gestionar los cambios de esquema:

  • Migraciones automáticas - un enfoque declarativo donde las migraciones ocurren completamente en tiempo de ejecución. Con este flujo, Ent calcula la diferencia entre la base de datos conectada y el esquema necesario para satisfacer las definiciones de ent.Schema, luego aplica los cambios a la base de datos.

  • Migraciones versionadas - un flujo donde las migraciones de esquema se escriben como archivos SQL previamente y luego se aplican a la base de datos mediante herramientas especializadas como Atlas o golang-migrate.

Muchos usuarios comienzan con migraciones automáticas por ser el enfoque más sencillo para empezar, pero a medida que su proyecto crece, pueden necesitar más control sobre el proceso de migración, y cambian al flujo de migraciones versionadas.

Este tutorial te guiará paso a paso en el proceso de actualizar un proyecto existente desde migraciones automáticas hacia migraciones versionadas.

Repositorio de apoyo

Todos los pasos demostrados en este tutorial están disponibles en el repositorio rotemtam/ent-versioned-migrations-demo en GitHub. En cada sección enlazaremos al commit relevante en el repositorio.

El proyecto inicial de Ent que actualizaremos está disponible aquí.

Migración automática

En este tutorial asumimos que tienes un proyecto existente de Ent usando migraciones automáticas. Muchos proyectos simples incluyen un bloque de código similar a este en su archivo main.go:

package main

func main() {
// Connect to the database (MySQL for example).
client, err := ent.Open("mysql", "root:pass@tcp(localhost:3306)/test")
if err != nil {
log.Fatalf("failed connecting to mysql: %v", err)
}
defer client.Close()
ctx := context.Background()
// Run migration.
if err := client.Schema.Create(ctx); err != nil {
log.Fatalf("failed creating schema resources: %v", err)
}
// ... Continue with server start.
}

Este código se conecta a la base de datos y luego ejecuta la herramienta de migración automática para crear todos los recursos del esquema.

A continuación, veamos cómo configurar nuestro proyecto para migraciones versionadas.