チームでスキーマ変更を管理する方法
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.prisma
)
schema.prisma
ファイルをソース管理するだけでは不十分です。マイグレーション履歴を含める必要があります。その理由は次のとおりです。
- カスタマイズされたマイグレーションには、Prismaスキーマで表現できない情報が含まれています。
prisma migrate deploy
コマンドはマイグレーションファイルのみを実行します。
2. チームの変更を取り込む
2.1. 最新の変更をプルする
コラボレーターからの変更を取り込むには
- 変更されたPrismaスキーマと
./prisma/migrations
フォルダーをプルします。 - マイグレートコマンドを実行します。
npx prisma migrate dev
2.2. シナリオ例
スキーマ変更を共有する3人の開発者によるシナリオ例を見ていきましょう。
- 変更前
- 変更後
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. 変更をマージする
マイグレーション履歴に2つの新しいマイグレーションが追加されました。
4. 変更を統合する
4.1. チームの変更をプルする
-
最新の変更をプルします。
- 2つの新しいマイグレーション
- 更新されたスキーマファイル
-
マージされたスキーマを確認します。
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
- 新しいマイグレーションファイル
次のステップ
チームでのスキーマ管理を理解したところで、以下を行うことができます。
- マイグレーションのカスタマイズについて学ぶ
- デプロイメントワークフローを探求する
詳細情報
Prismaとのつながりを保つ
以下とつながって、Prismaの旅を続けましょう。 アクティブなコミュニティ。情報を入手し、参加し、他の開発者と協力しましょう。
- Xでフォロー お知らせ、ライブイベント、役立つヒントをお届けします。
- Discordに参加 質問したり、コミュニティと話したり、会話を通じて活発なサポートを受けましょう。
- YouTubeで購読 チュートリアル、デモ、ストリームをお届けします。
- GitHubでエンゲージ リポジトリをスターしたり、問題を報告したり、問題に貢献したりしましょう。