1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Prisma基本コマンド

Last updated at Posted at 2024-12-05

Prismaとは

Prisma」は、TypeScriptやJavaScriptを使ったアプリケーション開発でデータベースとやり取りするためのモダンなORMツールです。

prismaのインストールと初期設定

①インストール

npm install prisma --save-dev
npx prisma init

プロジェクト配下に

prisma/
├── schema.prisma

が作成されます

②接続情報の記載
.envファイルにDATABASE_URLを追加。データベースの接続情報を記述します。

Prismaスキーマの定義

以下のような形でデータモデルを定義します。

例)

schema.prisma
// ユーザ
model User {
  // ユーザID
  id                 String  @id @default(uuid()) @db.Uuid
  // ユーザ名
  userName           String? @map("user_name") @db.VarChar(120)
  // メールアドレス
  email              String  @unique @db.VarChar(255)
  // 所属部署ID
  departmentId    String  @map("department_id") @db.Uuid
  // 削除済み
  isDeleted          Boolean @default(false) @map("is_deleted") @db.Boolean

  // ---- relation fields ----
  department  Department @relation(fields: [departmentId], references: [id])

  @@index([departmentId])
  @@map("user")
}

// 部署
model Department {
  id       String     @id @default(uuid()) @db.Uuid
  name     String     @db.VarChar(120)

  // ---- relation fields ----
  users    User[]

  @@map("department")
}

フォーマットをかけたい場合は以下です。

npx prisma format

データベースに適用する

npx prisma migrate dev --name <migration_name>

上記のコマンドを実行するとマイグレーションファイル作成からデータベースへの適用まで実行できます。

マイグレーションを実行すると_prisma_migrationsというテーブルに実行履歴が残ります。
このテーブルの履歴とマイグレーションファイルが一致していなかったり
失敗した履歴が残っていたりするとエラーになります。

データのリセットが必要な変更を加えた場合や履歴と不整合が起きた場合、
失敗した履歴が残っている場合等にデータをリセットするか聞かれます。
データを消してはいけない場合は必ずnを入力してください。
その後schemaの見直しを行なってください。

Do you want to continue? All data will be lost. › (y/N)

安全にデータベースに変更を反映するために、実際の運用方法としてのおすすめは以下の流れです。

① マイグレーションファイルを作成する(ローカルや開発環境で実施)

・以下のコマンドを実行するとマイグレーションファイルのみ生成され、データベースには適用されません。

ローカル環境で以下のコマンドを実行後にマイグレーションファイルのSQLを確認。
自分の入れた修正が間違っていないか確認できます。
間違えた場合はフォルダごと消してしまえばマイグレーションの実行履歴が残らないのでやり直しが簡単です。

npx prisma migrate dev --create-only

② データベースに適用する

・①で作成したマイグレーションファイルをデータベースに適用します。
・devと違い、マイグレーションファイルを作成せず、データベースのリセットも発生しません。

本番環境にマイグレーションファイルを適用したいときはこのコマンドのみ実行します。

npx prisma migrate deploy

その他、履歴に不整合が起きていたり、エラーが起きた時の対処にも使用できるコマンドです。

マイグレーションファイルを適用済みにする
npx prisma migrate resolve --applied "適用済みにしたいマイグレーションファイルのフォルダ名" 

上記のコマンドはデータベースにすでに変更が入っていてマイグレーションの実行履歴が残っていない場合に適用済みであることを履歴に残します。

マイグレーションをロールバックする

npx prisma migrate resolve --rolled-back "ロールバックしたいマイグレーションファイルのフォルダ名"

上記のコマンドはエラーになったマイグレーションをロールバックしたい場合に使用できます。実行履歴のロールバックでデータベースのスキーマ自体は変更しません。


マイグレーションのエラーを解消できない場合、非推奨ですが
_prisma_migrationsテーブルのレコードを削除してマイグレーションファイルと整合性をとることも可能です。

クライアントの生成

Prismaクライアントを生成してデータベース操作を可能にします。

npx prisma generate

おわりに

エラーになった時の対処で手こずることもありますが、
履歴管理ができて変更もschema.prismaに入れるだけなのでチームでの開発に便利でした。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?