Saltar al contenido principal

Migraciones personalizadas

[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 →

[Repositorio de ejemplo]

El cambio descrito en esta sección puede encontrarse en PR #7 del repositorio de ejemplo.

Migraciones personalizadas

En algunos casos, quizá quieras escribir migraciones personalizadas que no sean generadas automáticamente por Atlas. Esto puede ser útil cuando necesitas realizar cambios en tu base de datos que no están soportados actualmente por Ent, o si deseas poblar la base de datos con datos iniciales.

En esta sección, aprenderemos cómo añadir migraciones personalizadas a nuestro proyecto. Para este ejemplo, supongamos que queremos poblar la tabla de usuarios con algunos datos.

Crear una migración personalizada

Comencemos añadiendo un nuevo archivo de migración a nuestro proyecto:

atlas migrate new seed_users --dir file://ent/migrate/migrations

Observa que se ha creado un nuevo archivo llamado 20221115102552_seed_users.sql en el directorio ent/migrate/migrations.

Continúa abriendo el archivo y añadiendo las siguientes sentencias SQL:

INSERT INTO `users` (`name`, `email`, `title`)
VALUES ('Jerry Seinfeld', 'jerry@seinfeld.io', 'Mr.'),
('George Costanza', 'george@costanza.io', 'Mr.')

Recalcular el archivo de suma de verificación

Intentemos ejecutar nuestra nueva migración personalizada:

atlas migrate apply --dir file://ent/migrate/migrations --url mysql://root:pass@localhost:3306/db

Atlas falla con un error:

You have a checksum error in your migration directory.
This happens if you manually create or edit a migration file.
Please check your migration files and run

'atlas migrate hash'

to re-hash the contents and resolve the error

Error: checksum mismatch

Atlas introduce el concepto de integridad del directorio de migraciones para garantizar un historial de migraciones lineal. Así, si varios desarrolladores trabajan en paralelo en el mismo proyecto, pueden asegurarse de que el historial combinado sea correcto.

Recalculemos las sumas de verificación de nuestro directorio de migraciones para resolver el error:

atlas migrate hash --dir file://ent/migrate/migrations

Si ejecutamos atlas migrate apply nuevamente, veremos que la migración se aplica correctamente:

atlas migrate apply --dir file://ent/migrate/migrations --url mysql://root:pass@localhost:3306/db

Atlas informa:

Migrating to version 20221115102552 from 20221115101649 (1 migrations in total):

-- migrating version 20221115102552
-> INSERT INTO `users` (`name`, `email`, `title`)
VALUES ('Jerry Seinfeld', 'jerry@seinfeld.io', 'Mr.'),
('George Costanza', 'george@costanza.io', 'Mr.')
-- ok (9.077102ms)

-------------------------
-- 19.857555ms
-- 1 migrations
-- 1 sql statements

En la siguiente sección, aprenderemos a verificar automáticamente la seguridad de nuestras migraciones de esquema usando la función de Linting de Atlas.