チームでスキーマ変更を管理する方法
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. ソース管理の要件
以下のファイルをソース管理にコミットする必要があります
migration_lock.toml
ファイルを含む、.prisma/migrations
フォルダの内容- Prisma Schema (
schema.prisma
)
schema.prisma
ファイルをソース管理するだけでは不十分です。マイグレーション履歴を含める必要があります。なぜなら
- カスタマイズされたマイグレーションには、Prismaスキーマでは表現できない情報が含まれている
prisma migrate deploy
コマンドはマイグレーションファイルのみを実行する
2. チームの変更を組み込む
2.1. 最新の変更をプルする
共同作業者からの変更を組み込むには
- 変更されたPrismaスキーマと
./prisma/migrations
フォルダをプルする - migrateコマンドを実行する
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の変更
アニアが新しいフィールドを追加
model User {
/* ... */
favoriteColor String?
}
そしてマイグレーションを生成
npx prisma migrate dev --name new-field
3.2. 開発者Bの変更
ハビエルが新しいモデルを追加
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. マイグレーションを生成する
migrateコマンドを実行する
npx prisma migrate dev
これは以下を行います
- チームのマイグレーションを適用する
- 自分の変更のための新しいマイグレーションを作成する
- 新しいマイグレーションを適用する
4.3. 変更をコミットする
コミット
- マージされた
schema.prisma
- 新しいマイグレーションファイル
次のステップ
チームスキーマの管理を理解したので、次のことができます
- マイグレーションのカスタマイズについて学ぶ
- デプロイメントワークフローを探る
詳細情報
Prismaとのつながりを保つ
Prismaの旅を続けるには、以下とつながってください アクティブなコミュニティ。最新情報を入手し、参加し、他の開発者と協力してください
- Xでフォローしてください お知らせ、ライブイベント、役立つヒントをお届けします。
- Discordに参加してください 質問をしたり、コミュニティと話したり、会話を通じてアクティブなサポートを得ることができます。
- YouTubeでチャンネル登録してください チュートリアル、デモ、ストリームをご覧ください。
- GitHubでエンゲージしてください リポジトリにスターを付けたり、問題を報告したり、Issueに貢献したりしてください。