🐥
prismaのマイグレーションでP3009が出た際の対処法
前提環境
- DB:vercelDB(postgres)
- ORM:prisma
起こったエラー
Run yarn turbo db:migrate:deploy
yarn run v1.22.22
$ /home/runner/----/----/----/node_modules/.bin/turbo db:migrate:deploy
Attention:
Turborepo now collects completely anonymous telemetry regarding usage.
This information is used to shape the Turborepo roadmap and prioritize features.
You can learn more, including how to opt-out if you'd not like to participate in this anonymous program, by visiting the following URL:
https://turbo.build/repo/docs/telemetry
• Running db:migrate:deploy in 24 packages
• Remote caching disabled
Error: ----/prisma#db:migrate:deploy: command
-----:db:migrate:deploy
cache bypass, force executing 7ebee3cff93839c4
$ prisma migrate deploy
Environment variables loaded from .env
Prisma schema loaded from schema.prisma
110 migrations found in prisma/migrations
Error: P3009
migrate found failed migrations in the target database, new migrations will not be applied. Read more about how to resolve migration issues in a production database: https://pris.ly/d/migrate-resolve
The `20241104131648_add_schedule_interview_url` migration started at 2024-11-11 08:21:56.607675 UTC failed
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
Error: command finished with error: command (/home/runner/work/oobo/oobo/packages/prisma) /tmp/yarn--1731319071612-0.9708688810613961/yarn run db:migrate:deploy exited (1)
Tasks: 0 successful, 1 total
Cached: 0 cached, 1 total
Time: 7.46s
Failed: @oobo/prisma#db:migrate:deploy
ERROR run failed: command exited (1)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
Error: Process completed with exit code 1.
何が起こっていたのか
- 前回失敗したマイグレーション(20241104131648_add_schedule_interview_url)が解決できていないため次のマイグレーションを実行することができない状態になっていた
解決
- 今回の失敗したマイグレーションは不要だったため削除した
-
20241104131648_add_schedule_interview_url
がログで出ていたのでマイグレーションを管理している_prisma_migrationsからnameで探し、そのidを削除しました - resolveを使用して解決済みにする方法もあるみたいですが、不要なら削除で新しいマイグレーションを動かした方が早い
番外編
prismaを使用してマイグレーションを作成、反映の手順
prismaのあるディレクトリに移動
prisma/schema.prisma
このファイルに追加または変更または削除する変更を加える
npx prisma generate
Prisma Clientを生成するコマンド
マイグレーションファイルもこの時に生成される
npx prisma migrate dev
これでローカル環境でマイグレーションを走らせてschema.prismaでした変更をDBに適用させる
Discussion