En Prisma ORM, las migraciones se manejan para mantener sincronizada la estructura de la base de datos con los modelos definidos en el archivo schema.prisma
. Prisma ofrece un flujo de trabajo basado en migraciones controladas para aplicar cambios de manera segura y controlada en tu base de datos.
Pasos para manejar migraciones en Prisma:
1. Definir el modelo en el archivo schema.prisma
El archivo schema.prisma
es donde defines tus modelos, relaciones y el proveedor de base de datos.
Ejemplo básico de un archivo schema.prisma:
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
}
model User {
id Int @id @default(autoincrement())
name String
email String @unique
posts Post[]
}
model Post {
id Int @id @default(autoincrement())
title String
content String?
published Boolean @default(false)
author User @relation(fields: [authorId], references: [id])
authorId Int
}
En este ejemplo, se definen los modelos User y Post, con una relación entre ellos.
2. Crear una migración
Cuando realizas cambios en el esquema, como añadir, modificar o eliminar campos o relaciones, debes crear una nueva migración que Prisma aplicará a la base de datos.
Para crear una migración, se utiliza el siguiente comando:
npx prisma migrate dev --name nombre-de-la-migracion
- El parámetro
--name
te permite darle un nombre descriptivo a la migración (por ejemplo,add-post-model
). - El comando genera un archivo de migración SQL basado en los cambios del archivo
schema.prisma
y lo aplica a la base de datos de desarrollo.
Prisma guardará este archivo de migración en una carpeta prisma/migrations
, donde mantendrá el historial de cambios.
3. Revisar y aplicar migraciones en producción
En un entorno de producción, las migraciones no se aplican automáticamente como en desarrollo. En su lugar, utilizas el siguiente comando para aplicar las migraciones a la base de datos de producción:
npx prisma migrate deploy
Esto asegurará que las migraciones sean aplicadas de forma segura en un entorno de producción.
4. Verificar el estado de las migraciones
Puedes verificar qué migraciones han sido aplicadas y el estado de la base de datos usando:
npx prisma migrate status
Esto te mostrará el estado actual de las migraciones, si hay migraciones pendientes, y si la base de datos está sincronizada con el esquema actual.
5. Revertir migraciones
Si necesitas deshacer una migración en desarrollo, puedes utilizar el siguiente comando para regresar a una migración anterior:
npx prisma migrate reset
Este comando eliminará toda la base de datos y aplicará nuevamente todas las migraciones desde el principio. Solo se recomienda para entornos de desarrollo, ya que en producción, generalmente no se eliminan datos.
6. Modificar migraciones
Si aún no has desplegado una migración a producción y necesitas modificarla, puedes editar el archivo SQL generado en prisma/migrations
, o puedes simplemente eliminar la migración y volver a generar una nueva con los cambios adecuados.
Flujo típico de trabajo con Prisma y migraciones:
-
Modificar el modelo en el archivo
schema.prisma
. -
Crear la migración con
npx prisma migrate dev --name nombre-de-la-migracion
. -
Aplicar migraciones en producción con
npx prisma migrate deploy
. - Actualizar el cliente Prisma para reflejar los cambios en la base de datos en el código:
npx prisma generate
Comandos clave:
-
npx prisma migrate dev --name nombre
: Crea y aplica migraciones en desarrollo. -
npx prisma migrate deploy
: Aplica las migraciones en producción. -
npx prisma migrate status
: Verifica el estado de las migraciones. -
npx prisma migrate reset
: Restablece la base de datos y aplica las migraciones nuevamente (solo en desarrollo).
Prisma gestiona las migraciones de una manera controlada y versionada, lo que permite mantener un historial de cambios en tu base de datos, facilitando tanto el desarrollo como la puesta en producción de cambios en la estructura de tus datos.
Top comments (0)