MeWrite Docs

Prisma: Migration failed to apply

Prismaのマイグレーションが失敗した場合のエラー原因と解決策

概要

Prismaのデータベースマイグレーションが適用できない場合のエラーです。

エラーメッセージ

``` Error: P3009 - migrate found failed migrations in the target database ```

原因

  1. マイグレーション履歴の不整合: 手動でDBを変更した
  2. 既存データとの競合: NOT NULL制約等が既存データに違反
  3. 権限不足: DBユーザーにDDL権限がない
  4. 前回のマイグレーション失敗: 中途半端な状態

解決策

1. 失敗したマイグレーションをリセット

```bash

開発環境: DBをリセット

npx prisma migrate reset

本番環境: 失敗したマイグレーションをマーク

npx prisma migrate resolve –rolled-back “20231201000000_failed_migration” ```

2. マイグレーション履歴を確認

```bash

状態を確認

npx prisma migrate status

差分を確認

npx prisma migrate diff –from-schema-datamodel prisma/schema.prisma –to-schema-datasource prisma/schema.prisma ```

3. 既存データに対応したマイグレーション

```sql – migration.sql – 既存データにデフォルト値を設定してからNOT NULLに ALTER TABLE “User” ADD COLUMN “role” TEXT DEFAULT ‘user’; UPDATE “User” SET “role” = ‘user’ WHERE “role” IS NULL; ALTER TABLE “User” ALTER COLUMN “role” SET NOT NULL; ```

4. ベースラインを設定

```bash

既存DBにベースラインを設定

npx prisma migrate resolve –applied “20231201000000_init” ```

5. スキーマを強制同期(開発環境のみ)

```bash npx prisma db push –accept-data-loss ```

よくある間違い

  • 本番DBでmigrate resetを実行
  • マイグレーションファイルを手動で削除
  • 複数環境で異なるマイグレーション履歴

関連エラー

関連エラー

Database の他のエラー

最終更新: 2025-12-11