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