Lección 7 de 17 · Lectura y práctica
Práctica: Implementar Migraciones en un Entorno de Staging
Tipo de lección: VideoConcepto claveLas migraciones en entornos de staging son como los ensayos generales antes del estreno de una obra de teatro. En producción, un error en una migración puede causar downtime o pérdida de datos.
Del concepto a la práctica
Taller de esta lección
Staging sirve para comprobar una secuencia con datos representativos, permisos equivalentes y una aplicación compatible. La prueba debe incluir el estado anterior, el cambio, una consulta posterior y un criterio claro de parada. No uses datos personales reales para fabricar el escenario.
Ejemplo resuelto
Con cuatro reservas existentes, añades status con valor inicial PENDING. Después cuentas cuatro valores no nulos y pruebas que una reserva nueva acepta CONFIRMED solo mediante una transición permitida.
Las cuatro reservas sintéticas deben tener IDs1–4, usuarios/salas existentes y rangos UTC no solapados. La nueva esid5 con rango posterior. Si en vez de crear actualizas una existente, el resultado sería4 filas,3 PENDING y1 CONFIRMED: declara cuál operación probaste. Un default de schema no implementa por sí solo una transición autorizada PENDING→CONFIRMED; la API debe comprobarla.
Pruébalo
Copia cuatro registros sintéticos conservando sus relaciones.
Aplica la migración en staging autorizado.
Ejecuta conteos antes y después.
Verifica lectura y escritura desde una versión compatible de la API.
Comprueba tu resultado
El conteo pasa de cuatro reservas sin estado a cuatro PENDING, sin cambios en usuario o sala.
Error frecuente: probar solo que el comando termina con código cero. Corrígelo verificando estructura, datos y comportamiento.
Ejercicio: usa reservas r1 a r4; después del backfill hay4 filas y4 PENDING; después de crear una reserva NUEVA confirmada hay5 filas,4 PENDING y1 CONFIRMED, no4 totales.

Mapa de prácticaUna clave conecta cada pedido con su cliente. INNER JOIN devuelve las coincidencias y puede producir varias filas por cliente. LEFT JOIN conserva también los clientes sin pedido y representa los campos ausentes con NULL.
Ver la infografía en tamaño completo ↗Tipo de lección: Video
Concepto clave
Las migraciones en entornos de staging son como los ensayos generales antes del estreno de una obra de teatro. En producción, un error en una migración puede causar downtime o pérdida de datos críticos. Staging es un entorno idéntico a producción donde probamos cambios de base de datos de forma segura antes de implementarlos en el entorno real.
Imagina que eres un arquitecto que va a remodelar un edificio ocupado. No empezarías a demoler paredes sin antes crear una maqueta exacta para probar tus planos. De la misma forma, las migraciones en staging te permiten validar que tus cambios en el schema.prisma funcionarán correctamente con los datos reales, sin afectar a los usuarios finales.
Cómo funciona en la práctica
El flujo típico sigue estos pasos:
- Desarrollas localmente y generas una migración con
prisma migrate dev - Subes los archivos de migración a tu repositorio de control de versiones
- Despliegas los cambios en el entorno de staging
- Ejecutas la migración en staging con
prisma migrate deploy - Verificas que la aplicación funciona correctamente con los nuevos cambios
- Si todo está bien, repites el proceso en producción
Este proceso garantiza que cualquier problema se detecte en staging, donde puedes corregirlo sin consecuencias para los usuarios.
Código en acción
Veamos un ejemplo real de migración que añade un índice a una tabla existente:
// 1. Primero, modificamos nuestro schema.prisma
// Antes:
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
createdAt DateTime @default(now())
}
// Después de añadir el índice:
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
createdAt DateTime @default(now())
@@index([createdAt]) // Nuevo índice añadido
}# 2. Generamos la migración en desarrollo
prisma migrate dev --name add_createdat_index_to_user
# 3. En staging, aplicamos la migración
prisma migrate deploy
# 4. Verificamos que la migración se aplicó correctamente
prisma migrate statusErrores comunes
- No probar con datos reales en staging: Muchos desarrolladores prueban migraciones solo con datos de prueba. Usa un snapshot de la base de producción en staging para detectar problemas con datos reales.
- Olvidar los rollbacks: Siempre ten un plan para revertir la migración. Prisma no genera rollbacks automáticos para todas las operaciones.
- Ignorar el tiempo de ejecución: En producción, una migración que tarda 2 horas puede ser inaceptable. Mide el tiempo en staging y optimiza si es necesario.
- No verificar dependencias: Si tu migración depende de datos existentes, valida que esos datos estén presentes y en el formato esperado.
Checklist de dominio
- ¿Has probado la migración en un entorno idéntico a producción?
- ¿Has medido el tiempo de ejecución y confirmado que es aceptable?
- ¿Tienes un backup de la base de datos antes de aplicar la migración?
- ¿Has verificado que la aplicación funciona correctamente después de la migración?
- ¿Has probado el rollback de la migración en caso de problemas?
- ¿Has comunicado el mantenimiento a los equipos afectados?
- ¿Has documentado los cambios para futuras referencias?
Implementar una migración segura en entorno de staging
En este ejercicio, implementarás una migración en un entorno de staging que simula producción. Sigue estos pasos:
- Crea una copia de tu base de datos de desarrollo y configúrala como entorno de staging
- Modifica el schema.prisma para añadir un campo 'lastLogin' de tipo DateTime al modelo User
- Genera la migración localmente con un nombre descriptivo
- Aplica la migración en el entorno de staging usando prisma migrate deploy
- Verifica que la migración se aplicó correctamente ejecutando una consulta que use el nuevo campo
- Crea un script que valide que todos los usuarios existentes tienen un valor válido en el nuevo campo
Entrega: Un archivo con el código de la migración generada y capturas de pantalla mostrando la aplicación exitosa en staging.
Pistas
- Usa prisma db push para probar rápidamente en desarrollo antes de generar la migración formal
- Considera usar un valor por defecto para el nuevo campo para evitar problemas con registros existentes
- Verifica los permisos de la base de datos en staging, pueden diferir de desarrollo
Evalua tu comprension
Completa el quiz interactivo de arriba para ganar XP.
Sigue con Prisma ORM Profesional: Schemas, Migraciones y Queries Optimizadas para Producción
Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.
Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.