跳到主要內容

建立資料庫基準線

建立初始 Migration

若要搭配您在上個章節中 Introspection 的資料庫使用 Prisma Migrate,您需要建立資料庫基準線

建立基準線指的是為可能已經包含資料且無法重置的資料庫(例如您的生產資料庫)初始化您的 Migration 歷史記錄。建立基準線會告知 Prisma Migrate 假設一個或多個 Migration 已經應用於您的資料庫。

若要建立資料庫基準線,請使用 prisma migrate diff 來比較您的 Schema 和資料庫,並將輸出儲存到 SQL 檔案中。

首先,建立一個 migrations 目錄,並在其中新增一個目錄,並使用您偏好的 Migration 名稱。在本範例中,我們將使用 0_init 作為 Migration 名稱

mkdir -p prisma/migrations/0_init
資訊

-p 將會遞迴建立您提供的路徑中任何遺失的資料夾。

接下來,使用 prisma migrate diff 產生 Migration 檔案。使用以下引數

  • --from-empty:假設您要從空的資料模型進行 Migration
  • --to-schema-datamodel:使用 datasource 區塊中的 URL 的目前資料庫狀態
  • --script:輸出 SQL 腳本
npx prisma migrate diff --from-empty --to-schema-datamodel prisma/schema.prisma --script > prisma/migrations/0_init/migration.sql

檢閱 Migration

此命令將會產生一個應類似於以下腳本的 Migration

prisma/migrations/0_init/migration.sql
CREATE TABLE "User" (
id INT8 PRIMARY KEY DEFAULT unique_rowid(),
name STRING(255),
email STRING(255) UNIQUE NOT NULL
);

CREATE TABLE "Post" (
id INT8 PRIMARY KEY DEFAULT unique_rowid(),
title STRING(255) UNIQUE NOT NULL,
"createdAt" TIMESTAMP NOT NULL DEFAULT now(),
content STRING,
published BOOLEAN NOT NULL DEFAULT false,
"authorId" INT8 NOT NULL,
FOREIGN KEY ("authorId") REFERENCES "User"(id)
);

CREATE TABLE "Profile" (
id INT8 PRIMARY KEY DEFAULT unique_rowid(),
bio STRING,
"userId" INT8 UNIQUE NOT NULL,
FOREIGN KEY ("userId") REFERENCES "User"(id)
);