メインコンテンツへスキップ

チームでスキーマ変更を管理する方法

10分

はじめに

チームで作業する場合、データベーススキーマの変更管理は困難を伴うことがあります。このガイドでは、Prisma Migrateを使用してスキーマ変更に効果的に協力し、すべてのチームメンバーが安全にスキーマ変更に貢献し、取り込むことができるようにする方法を示します。

前提条件

このガイドを開始する前に、以下が準備されていることを確認してください。

  • Node.jsがインストールされていること(バージョン18以上)
  • マイグレーションが設定されたPrismaプロジェクト
  • リレーショナルデータベース(PostgreSQL、MySQL、SQLite、SQL Serverなど)
  • Gitの基本的な理解
  • Prisma Migrateの基本的な知識
注意

このガイドは**MongoDBには適用されません**。
migrate dev の代わりに、db pushMongoDB に使用されます。

1. マイグレーションの基礎を理解する

1.1. マイグレーションの順序

マイグレーションは、**作成されたのと同じ順序で適用されます**。作成日はマイグレーションのサブフォルダー名の一部です。例えば、20210316081837-updated-fields2021-03-16-08:18:37 に作成されました。

1.2. ソース管理の要件

以下のファイルをソース管理にコミットする必要があります。

  • .prisma/migrations フォルダーの内容(migration_lock.toml ファイルを含む)
  • Prismaスキーマ(schema.prisma

schema.prisma ファイルをソース管理するだけでは不十分です。マイグレーション履歴を含める必要があります。その理由は次のとおりです。

  • カスタマイズされたマイグレーションには、Prismaスキーマで表現できない情報が含まれています。
  • prisma migrate deploy コマンドはマイグレーションファイルのみを実行します。

2. チームの変更を取り込む

2.1. 最新の変更をプルする

コラボレーターからの変更を取り込むには

  1. 変更されたPrismaスキーマと./prisma/migrationsフォルダーをプルします。
  2. マイグレートコマンドを実行します。
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[]
}

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つの新しいマイグレーションが追加されました。

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

4. 変更を統合する

4.1. チームの変更をプルする

  1. 最新の変更をプルします。

    • 2つの新しいマイグレーション
    • 更新されたスキーマファイル
  2. マージされたスキーマを確認します。

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

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

4.2. マイグレーションを生成する

マイグレートコマンドを実行します。

npx prisma migrate dev

これにより

  1. チームのマイグレーションを適用します
  2. 自分の変更のための新しいマイグレーションを作成します
  3. 新しいマイグレーションを適用します

4.3. 変更をコミットする

コミットする項目

  • マージされた schema.prisma
  • 新しいマイグレーションファイル

次のステップ

チームでのスキーマ管理を理解したところで、以下を行うことができます。

詳細情報


Prismaとのつながりを保つ

以下とつながって、Prismaの旅を続けましょう。 アクティブなコミュニティ。情報を入手し、参加し、他の開発者と協力しましょう。

  • Xでフォロー お知らせ、ライブイベント、役立つヒントをお届けします。
  • Discordに参加 質問したり、コミュニティと話したり、会話を通じて活発なサポートを受けましょう。
  • YouTubeで購読 チュートリアル、デモ、ストリームをお届けします。
  • GitHubでエンゲージ リポジトリをスターしたり、問題を報告したり、問題に貢献したりしましょう。
皆様のご参加を心よりお待ちしております!コミュニティの一員になっていただけることを楽しみにしております!

© . All rights reserved.