managing-dev-migrations
Decision Tree
Use prisma migrate dev when: Building production-ready features; working on teams with shared schema changes; needing migration history for rollbacks; version controlling schema changes; deploying to staging/production.
Use prisma db push when: Rapid prototyping and experimentation; early-stage development with frequent schema changes; personal projects without deployment concerns; testing schema ideas quickly; no migration history needed.
migrate dev Workflow
npx prisma migrate dev --name add_user_profile
Detects schema changes in schema.prisma, generates SQL migration, applies to database, regenerates Prisma Client.
Review generated SQL before applying with --create-only:
npx prisma migrate dev --create-only --name add_indexes
Edit if needed, then apply:
npx prisma migrate dev
db push Workflow
npx prisma db push
Syncs schema.prisma directly to database without creating migration files; regenerates Prisma Client with warnings on destructive changes. Use for throwaway prototypes or when recreating migrations later.
Editing Generated Migrations
When to edit: Add custom indexes; include
data migrations; optimize generated SQL; add database-specific features.
Example: After --create-only:
CREATE TABLE "User" (
"id" TEXT NOT NULL,
"email" TEXT NOT NULL,
"name" TEXT,
"role" TEXT NOT NULL DEFAULT 'user',
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
);
UPDATE "User" SET "role" = 'admin' WHERE "email" = 'admin@example.com';
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
Apply:
npx prisma migrate dev
Workflow Examples
| Scenario | Commands |
|---|---|
| Feature Development | npx prisma migrate dev --name add_comments; npx prisma migrate dev --name add_comment_likes; npx prisma migrate dev --name add_comment_moderation |
| Prototyping | npx prisma db push (repeat); once stable: npx prisma migrate dev --name initial_schema |
| Review & Customize | npx prisma migrate dev --create-only --name optimize_queries; edit prisma/migrations/[timestamp]_optimize_queries/migration.sql; npx prisma migrate dev |
Switching Between Workflows
From db push to migrate dev: Prisma detects current state and creates baseline migration:
npx prisma migrate dev --name initial_schema
Handling conflicts (unapplied migrations + db push usage):
npx prisma migrate reset
npx prisma migrate dev
Common Patterns
| Pattern | Command |
|---|---|
| Daily Development | npx prisma migrate dev --name descriptive_name (one per logical change) |
| Experimentation | npx prisma db push (until design stable) |
| Pre-commit Review | npx prisma migrate dev --create-only --name feature_name (review SQL, commit schema + migration) |
| Team Collaboration | git pull; npx prisma migrate dev (apply teammate migrations) |
Troubleshooting
Migration Already Applied: Normal when no schema changes exist. Run npx prisma migrate dev.
Drift Detected: Shows differences between database and migration history:
npx prisma migrate diff --from-migrations ./prisma/migrations --to-schema
-datamodel ./prisma/schema.prisma
Resolve by resetting or creating new migration.
Data Loss Warnings: Both commands warn before destructive changes. Review carefully before proceeding; migrate data or adjust schema to cancel.
More from djankies/claude-configs
optimizing-with-react-compiler
Teaches what React Compiler handles automatically in React 19, reducing need for manual memoization. Use when optimizing performance or deciding when to use useMemo/useCallback.
16migrating-middleware-to-proxy
Teach middleware.ts to proxy.ts migration in Next.js 16. Use when migrating middleware, encountering middleware errors, or implementing request proxying.
5migrating-to-vitest-4
Migrate from Vitest 2.x/3.x to 4.x with pool options, coverage config, workspace to projects, and browser mode updates. Use when upgrading Vitest versions or encountering deprecated patterns.
5reviewing-test-quality
Review React 19 test quality including coverage, patterns, and React 19 API testing. Use when reviewing tests or test coverage.
5validating-query-inputs
Validate all external input with Zod before Prisma operations. Use when accepting user input, API requests, or form data.
5using-theme-variables
Define and use theme variables with @theme directive, oklch() color format, semantic naming, and namespaced utilities. Use when customizing design tokens or creating design systems.
5