跳至主要内容

团队开发

要合并来自合作者的更改

  1. 拉取已更改的 Prisma 模式和 ./prisma/migrations 文件夹

  2. 运行 migrate dev 命令以应用新迁移

    npx prisma migrate dev

迁移将按创建顺序应用。创建日期是迁移子文件夹名称的一部分 - 例如,20210316081837-updated-fields2021-03-16-08:18:37 创建。

警告

本指南不适用于MongoDB
代替 migrate devdb push 用于 MongoDB

示例:合并您的团队的更改

以下示例场景演示了三个开发人员团队如何共享和合并对 Prisma 模式和迁移历史记录的更改。

以下选项卡显示了团队在进行一轮更改之前和之后对 Prisma 模式的更改。

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[]
}

团队的更改

您的团队成员 Ania 和 Javier 在他们的本地环境中对模式进行附加更改并生成迁移。

Ania 进行以下更改

  1. 添加模型字段

    model User {
    /* ... */
    favoriteColor String?
    }
  2. 生成迁移

    npx prisma migrate dev --name new-field
  3. 提交已更改的模式和新的迁移

    • ./prisma/schema.prisma
    • ./prisma/migrations/20210316081837-new-field/migration.sql

Javier 进行以下更改

  1. 向模式添加新的模型

    model Tag {
    tagName String @id
    tagCategory Category
    }
  2. 生成迁移

    npx prisma migrate dev --name new-model
  3. 提交已更改的模式和新的迁移

    • ./prisma/schema.prisma
    • ./prisma/migrations/20210316091837-new-model/migration.sql

迁移历史记录现在有两个新的迁移

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

合并更改

想要合并您的团队的更改。为此,您需要

  1. 从您的团队拉取最新更改,包括

    • 两个新的迁移

      • ./prisma/migrations/20210316081837-new-field/migration.sql
      • ./prisma/migrations/20210316091837-new-model/migration.sql
    • 已更新的模式文件。Git 会自动将更新后的模式与本地的模式更改合并(新的 bestPacmanScore 字段)

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

      model Tag {
      tagName String @id
      tagCategory Category
      posts Post[]
      }
  2. 运行 migrate dev 命令

    npx prisma migrate dev
    1. 将 Ania 和 Javier 的迁移应用到您的本地数据库。

      • ./prisma/migrations/20210316081837-new-field/migration.sql
      • ./prisma/migrations/20210316091837-new-model/migration.sql
    2. 使用您的更改创建一个新的迁移,提示您为其命名(pacman-field),并将新的迁移应用到您的本地数据库

      • ./prisma/migrations/20210322081837-pacman-field/migration.sql
  3. 提交合并的 schema.prisma 和您的新迁移:./prisma/migrations/20210322081837-pacman-field/migration.sql

您的 schema.prisma 和本地数据库现在包含您的团队的更改,迁移历史记录也包含您的迁移

A migration history with 5 migrations.

源代码管理

您应该将以下文件提交到源代码管理

  • .prisma/migrations 文件夹的内容,包括 migration_lock.toml 文件
  • Prisma 模式(schema.prisma

仅对 schema.prisma 文件进行源代码管理是不够的 - 您必须包括您的迁移历史记录。这是因为

  • 当您开始自定义迁移 时,您的迁移历史记录包含无法在 Prisma 模式中表示的信息。例如,您可以自定义迁移以减轻因重大更改而导致的数据丢失。
  • prisma migrate deploy 命令用于将更改部署到暂存、测试和生产环境,它运行迁移文件。Prisma Migrate 仅使用模式来读取 urlprovider 字段,而不是模型和字段。