如何在團隊中管理 Schema 變更
10 分鐘
簡介
在團隊中工作時,管理資料庫 Schema 變更可能具有挑戰性。本指南將向您展示如何有效地協作處理 Schema 變更,使用 Prisma Migrate 確保所有團隊成員都可以安全地貢獻和整合 Schema 變更。
先決條件
開始本指南之前,請確保您已具備
- 已安裝 Node.js (版本 18 或更高版本)
- 已設定包含遷移的 Prisma 專案
- 關聯式資料庫 (PostgreSQL、MySQL、SQLite、SQL Server 等)
- Git 的基本理解
- 對 Prisma Migrate 的基本熟悉
1. 了解遷移基礎知識
1.1. 遷移順序
遷移是按照它們建立的順序套用。建立日期是遷移子資料夾名稱的一部分 - 例如,20210316081837-updated-fields
是在 2021-03-16-08:18:37
建立的。
1.2. 原始碼控制需求
您應該將以下檔案提交到原始碼控制
.prisma/migrations
資料夾的內容,包括migration_lock.toml
檔案- Prisma Schema (
schema.prisma
)
僅原始碼控制 schema.prisma
檔案是不夠的 - 您必須包含您的遷移歷史記錄,因為
- 自訂遷移包含無法在 Prisma schema 中表示的資訊
prisma migrate deploy
命令僅執行遷移檔案
2. 整合團隊變更
2.1. 拉取最新變更
要整合來自協作者的變更
- 拉取已變更的 Prisma schema 和
./prisma/migrations
資料夾 - 執行遷移命令
npx prisma migrate dev
2.2. 範例情境
讓我們逐步了解三個開發人員共享 schema 變更的範例情境
- 之前
- 之後
schema.prisma
model Post {
id Int @id @default(autoincrement())
title String
content String?
published Boolean @default(false)
author User? @relation(fields: [authorId], references: [id])
authorId Int?
}
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
posts Post[]
}
schema.prisma
model Post {
id Int @id @default(autoincrement())
title String
content String?
published Boolean @default(false)
author User? @relation(fields: [authorId], references: [id])
authorId Int?
}
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
favoriteColor String? // Added by Ania
bestPacmanScore Int? // Added by you
posts Post[]
}
// Added by Javier
model Tag {
tagName String @id
tagCategory Category
}
3. 處理並行變更
3.1. 開發人員 A 的變更
Ania 新增一個欄位
model User {
/* ... */
favoriteColor String?
}
並產生一個遷移
npx prisma migrate dev --name new-field
3.2. 開發人員 B 的變更
Javier 新增一個模型
model Tag {
tagName String @id
tagCategory Category
}
並產生一個遷移
npx prisma migrate dev --name new-model
3.3. 合併變更
遷移歷史記錄現在有兩個新的遷移
4. 整合您的變更
4.1. 拉取團隊變更
-
拉取最新的變更
- 兩個新的遷移
- 已更新的 schema 檔案
-
檢閱已合併的 schema
model User {
/* ... */
favoriteColor String?
bestPacmanScore Int?
}
model Tag {
tagName String @id
tagCategory Category
posts Post[]
}
4.2. 產生您的遷移
執行遷移命令
npx prisma migrate dev
這將會
- 套用您團隊的遷移
- 為您的變更建立新的遷移
- 套用您的新遷移
4.3. 提交變更
提交
- 已合併的
schema.prisma
- 您的新遷移檔案
下一步
現在您已了解團隊 schema 管理,您可以
如需更多資訊和更新