如何在团队中管理模式变更
10 分钟
简介
在团队中工作时,管理数据库模式变更可能具有挑战性。本指南向您展示如何有效地协作处理模式变更,使用 Prisma Migrate 确保所有团队成员都可以安全地贡献和整合模式变更。
先决条件
在开始本指南之前,请确保您已具备以下条件
- 已安装 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.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
- 您的新迁移文件
下一步
现在您已经了解了团队模式管理,您可以
获取更多信息和更新