Creating and Running Migrations

1. Creating Development Migration

npx prisma migrate dev --name add_user_email_index
StepDetail
DiffCompare schema vs shadow DB
Generate SQLStored in prisma/migrations/<ts>_name/
ApplyRun on dev DB
RegeneratePrisma client refreshed

2. Applying Production Migrations

npx prisma migrate deploy
AspectDetail
No promptsApply pending migrations only
CI/CDRun in deploy pipeline before app boot
DIRECT_URLUse direct DB URL (skip pooler)

3. Resetting Database

npx prisma migrate reset       # drop, recreate, re-apply, seed
UseDetail
Dev onlyWipes all data
Runs seedTriggers prisma db seed

4. Checking Migration Status

CommandOutput
migrate statusPending / applied migrations
migrate diffSchema diff (without applying)

5. Creating Baseline Migration

npx prisma migrate resolve --applied 0_init
UseDetail
Existing DBMark current state as baseline
Adopting PrismaAvoid re-running schema

6. Resolving Migration Conflicts

ScenarioResolution
DriftInspect with migrate diff
Failed migrationprisma migrate resolve --rolled-back <name>
Manual fixEdit SQL, mark applied

7. Using Shadow Database

AspectDetail
PurposeDiff state for safe migration generation
DefaultAuto-created (PG/MySQL)
CloudSet shadowDatabaseUrl for managed DBs

8. Customizing Migration SQL Files

UseDetail
Data backfillAdd SQL between schema changes
--create-onlyGenerate SQL without applying
Run reviewEdit, then migrate dev applies it

9. Handling Schema Drift

Warning: If the database has unexpected changes not tracked in _prisma_migrations, Prisma will block migrations. Use migrate diff to inspect and either pull (db pull) or reset.
ActionWhen
db pullAdopt out-of-band changes
migrate resetWipe + reapply

10. Rolling Back Migrations

StrategyDetail
No auto-rollbackPrisma forward-only
ManualCreate reverse migration
Mark rolled backmigrate resolve --rolled-back