データベースのベースライン設定
ベースライン設定は、次のデータベースの移行履歴を初期化するプロセスです。
- ✔ Prisma Migrateを使い始める前に存在していた
- ✔ 維持する必要があるデータ(本番環境など)が含まれており、データベースをリセットできない
ベースライン設定は、Prisma Migrateに、1つ以上の移行がすでに適用されていると想定するように指示します。これにより、生成された移行が、すでに存在するテーブルとフィールドを作成しようとしたときに失敗するのを防ぎます。
注:開発データベースをリセットおよびシードすることは許容されると想定しています。
ベースライン設定は、既存のデータベースを持つプロジェクトにPrisma Migrateを追加するの一部です。
ベースライン設定が必要な理由
既存のプロジェクトにPrisma Migrateを追加すると、最初の移行には、Prisma Migrateを使い始める前のデータベースの状態を再作成するために必要なすべてのSQLが含まれています。
最初の移行を編集して、ストアドプロシージャやトリガーなど、Prismaスキーマでは表現できないスキーマ要素を含めることができます。
開発環境を作成およびリセットするには、この最初の移行が必要です。
ただし、prisma migrate deploy
を使用して移行をすでに存在し、リセットできないデータベース(本番環境など)にデプロイする場合、最初の移行を含めたくありません。
ターゲットデータベースには、最初の移行によって作成されたテーブルと列がすでに含まれており、これらの要素を再度作成しようとすると、エラーが発生する可能性が非常に高くなります。
ベースライン設定は、Prisma Migrateに最初の移行がすでに適用されていると見なすように指示することで、この問題を解決します。
データベースのベースライン設定
ベースライン移行を作成するには
-
prisma/migrations
フォルダーがある場合は、このフォルダーを削除、移動、名前変更、またはアーカイブします。 -
次のコマンドを実行して、任意の名前の
migrations
ディレクトリを内部に作成します。この例では、移行名に0_init
を使用します。mkdir -p prisma/migrations/0_init
情報0_
は、Prisma Migrateが移行を辞書式順序で適用するため重要です。現在のタイムスタンプなど、別の値を使用できます。 -
prisma migrate diff
を使用して移行を生成し、ファイルに保存しますnpx prisma migrate diff \
--from-empty \
--to-schema-datamodel prisma/schema.prisma \
--script > prisma/migrations/0_init/migration.sql -
無視する必要がある移行ごとに
prisma migrate resolve
コマンドを実行しますnpx prisma migrate resolve --applied 0_init
このコマンドは、ターゲット移行を_prisma_migrations
テーブルに追加し、適用済みとしてマークします。新しい移行を適用するためにprisma migrate deploy
を実行すると、Prisma Migrateは
- ベースライン移行を含む、'適用済み'としてマークされたすべての移行をスキップします
- ベースライン移行後に来る新しい移行を適用します