メインコンテンツまでスキップ

Prisma

マイグレーション

https://www.prisma.io/docs/orm/prisma-migrate

開発環境でスキーマを変更したときに DB に適用するコマンドは 2 つある。

prisma migrate devは、マイグレーションファイルを作成したうえで、スキーマを DB に適用する。 マイグレーションファイルを生成する際の差分検出は、シャドウデータベースという仕組みによって行われる。 シャドウデータベースは、スキーマ定義を元に作成された空のダミーのデータベースのことで、 prisma migrate devするたびに自動で作成・破棄されている。 これと実際のデータベースとの差分を見ることでマイグレーションファイルを生成している。

prisma db pushは、マイグレーションファイルを作成することなく、単にスキーマを DB に適用する。 プロトタイプ作成時など、とりあえずガシガシ DB 構成を変えたいときはこちらが最適である。 方針が定まった段階でprisma migrate reset && prisma migrate devを使ってマイグレーションファイルを生成するとよい。

本番環境へのデプロイはprisma migrate deployを使う。 本番 DB に適用する際には、schema.prismaは一切使われない。 生成済みのマイグレーションファイルのみが使用される。

prisma は、開発環境のデータベースをいつでも捨てられる前提で設計されており、リセット時にデータが失われることは不可避である。

本番 DB に適用済みのマイグレーションファイルを変更・削除することは絶対にしないこと。 非常に面倒なことになり、最悪の場合はマイグレーションファイルをすべて捨ててゼロから再セットアップが必要になる。