資料庫基準化
基準化是為資料庫初始化遷移歷史記錄的過程,該資料庫
- ✔ 在您開始使用 Prisma Migrate 之前就已存在
- ✔ 包含必須維護的資料(例如生產環境),這表示資料庫無法重置
基準化會告知 Prisma Migrate 假設一個或多個遷移已經套用。這可防止產生的遷移在嘗試建立已存在的資料表和欄位時失敗。
注意:我們假設重置和植入種子開發資料庫是可以接受的。
基準化是將 Prisma Migrate 新增至具有現有資料庫的專案的一部分。
為什麼您需要基準化
當您將 Prisma Migrate 新增至現有專案時,您的初始遷移包含重建資料庫狀態所需的所有 SQL,在您開始使用 Prisma Migrate 之前
您可以編輯初始遷移,以包含 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 會
- 略過所有標記為「已套用」的遷移,包括基準遷移
- 套用基準遷移之後出現的任何新遷移