為資料庫設定基線
基線化是指為滿足以下條件的資料庫初始化遷移歷史記錄的過程:
- ✔ 在您開始使用 Prisma Migrate 之前就已經存在
- ✔ 包含必須維護的資料(如生產環境),這意味著資料庫不能重置
基線化告訴 Prisma Migrate 假定一個或多個遷移**已經應用**。這可以防止在生成的遷移嘗試建立已存在的表和欄位時失敗。
**注意**:我們假定重置和填充開發資料庫是可以接受的。
基線化是將 Prisma Migrate 新增到具有現有資料庫的專案的一部分。
為什麼需要設定基線
當您將 Prisma Migrate 新增到現有專案時,您的初始遷移包含重建**在您開始使用 Prisma Migrate 之前**資料庫狀態所需的所有 SQL。

您可以編輯初始遷移,以包含無法在 Prisma schema 中表示的 schema 元素——例如儲存過程或觸發器。
您需要此初始遷移來建立和重置**開發環境**。

然而,當您使用 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 會:
- 跳過所有標記為“已應用”的遷移,包括基線遷移
- 應用基線遷移**之後**的任何新遷移