跳至主要內容

如何在團隊中管理 Schema 變更

10 分鐘

簡介

在團隊中工作時,管理資料庫 Schema 的變更可能會充滿挑戰。本指南將展示如何使用 Prisma Migrate 有效地協作處理 Schema 變更,確保所有團隊成員都能安全地貢獻並整合這些變更。

先決條件

在開始本指南之前,請確保您擁有:

  • 已安裝 Node.js(版本 18 或更高)
  • 已設置遷移(migrations)的 Prisma 專案
  • 關聯式資料庫(PostgreSQL, MySQL, SQLite, SQL Server 等)
  • 對 Git 的基本了解
  • 對 Prisma Migrate 的基本熟悉程度
警告

本指南不適用於 MongoDB
對於 MongoDB,建議使用 db push 而非 migrate dev

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 指令只會執行遷移檔案

1.3. 設定 Prisma

在專案根目錄建立一個包含以下內容的 prisma.config.ts 檔案:

prisma.config.ts
import 'dotenv/config'
import { defineConfig, env } from 'prisma/config';

export default defineConfig({
schema: 'prisma/schema.prisma',
migrations: {
path: 'prisma/migrations',
},
datasource: {
url: env('DATABASE_URL'),
},
});
注意

您需要安裝 dotenv 套件來載入環境變數。如果您尚未安裝,請使用您的套件管理員安裝:

npm install dotenv

2. 整合團隊變更

2.1. 拉取最新變更

要整合協作者的變更:

  1. 拉取變更後的 Prisma schema 與 ./prisma/migrations 資料夾
  2. 執行遷移指令
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[]
}

3. 處理並發變更

3.1. 開發者 A 的變更

Ania 新增了一個欄位

model User {
/* ... */
favoriteColor String?
}

並產生了一次遷移

npx prisma migrate dev --name new-field
npx prisma generate

3.2. 開發者 B 的變更

Javier 新增了一個模型(model)

model Tag {
tagName String @id
tagCategory Category
}

並產生了一次遷移

npx prisma migrate dev --name new-model
npx prisma generate

3.3. 合併變更

現在遷移歷史紀錄中有兩次新的遷移

A diagram showing changes by two separate developers converging in a single migration history.

4. 整合您的變更

4.1. 拉取團隊變更

  1. 拉取最新的變更

    • 兩次新的遷移
    • 更新過的 schema 檔案
  2. 審閱合併後的 schema

model User {
/* ... */
favoriteColor String?
bestPacmanScore Int?
}

model Tag {
tagName String @id
tagCategory Category
posts Post[]
}

4.2. 產生您的遷移

執行遷移指令

npx prisma migrate dev
npx prisma generate

這將會:

  1. 套用您團隊的遷移
  2. 為您的變更建立一個新的遷移
  3. 套用您的新遷移

4.3. 提交變更

提交:

  • 合併後的 schema.prisma
  • 您新的遷移檔案

後續步驟

現在您已了解團隊 Schema 管理,您可以:

更多資訊


與 Prisma 保持聯繫

透過以下方式與我們聯繫,繼續您的 Prisma 旅程: 我們的活躍社群。保持資訊靈通、參與其中,並與其他開發者合作

我們衷心感謝您的參與,並期待您成為我們社群的一份子!

© . This site is unofficial and not affiliated with Prisma Data, Inc.