プロジェクト初期化に利用するコマンド
新しい Prisma プロジェクトをセットアップする
prisma init
# 利用するDBを指定できる
prisma init --datasource-provider sqlite
# 接続先(url)を指定できる
prisma init --url mysql://username:password@localhost:3306/mydb
開発中に利用するコマンド
アーティファクトを生成する(例:Prisma クライアント)
アーティファクトとは
Prismaの文脈で言及される「リレーショナルアーティファクト(Relational Artifacts)」または単に「アーティファクト(Artifacts)」とは、Prismaがデータベーススキーマから生成するさまざまなファイルやコードのことを指します。
Prismaを使用する際、以下のようなアーティファクトが生成されることがあります
- Prisma Client
Prismaは、モデル定義から自動的にタイプセーフなクライアントを生成します。これにより、開発者はデータベースへのクエリをシンプルで安全な方法で書くことができ、TypeScript や JavaScript で動作します。Prisma Clientは、Prisma Schemaから生成されたコードと、それに基づいたクエリエンジンを含みます。 - Prisma Migrations
データモデルの変更履歴を追跡し、データベーススキーマと同期させるために使用されます。これらのマイグレーションファイルは、データモデルに加えられた変更をバージョン管理し、開発環境から本番環境まで一貫したデータベーススキーマの変更を保証します。 - Prisma Schema
.prisma
ファイルで表されるスキーマ定義ファイルです。このファイルはデータモデル、データベース接続設定、およびその他のPrismaの設定を含みます。これらのアーティファクトは、Prismaツールチェーンの中心部となり、開発者がデータベース操作をより簡単かつ安全に扱えるようにするために不可欠です。Prismaはこれらを生成し、管理するためのコマンドラインツール(CLI)も提供しています。例えば、`prisma generate` コマンドはPrisma Clientの生成に使われ、`prisma migrate` コマンドはデータベースマイグレーションを扱います。リレーショナルアーティファクトという用語が用いられる場合、主にこれらPrismaによって生成されるファイルやコードの集まりを指すことが多いです。これにより、開発者はデータベースをより直感的に操作し、データベーススキーマの変更を効率的に管理できます。
prisma generate
Prisma スキーマを検証する
prisma validate
Prisma スキーマをフォーマットする
prisma format
既存のデータベースからスキーマを取得し、Prisma スキーマを更新する
prisma db pull
Prisma スキーマの状態をデータベースにプッシュする
db pushコマンドは、マイグレーションを使用せずにPrismaスキーマファイルの状態をデータベースにプッシュします。データベースが存在しない場合は、データベースを作成します。
prisma db push
# アーティファクト生成をスキップ
prisma db push --skip-generate
# データベースをリセットしてからスキーマを更新
prisma db push --force-reset
# データが消える警告を無視
prisma db push --accept-data-loss
Seedを利用する
prisma db seed
prisma studioの起動
prisma studio
# ポート指定可能 5050ポートで起動
prisma studio --port 5050
マイグレーションや運用作業で利用するコマンド
マイグレーションの実行、SQL作成
Prisma スキーマからマイグレーションを作成し、データベースに適用し、アーティファクトを生成する(例:Prisma クライアント)
migrate dev
開発環境でのみ使用、シャドウデータベースが必要
# マイグレーションを実行する
prisma migrate dev
# マイグレーションのSQLの生成のみを行う
prisma migrate dev --create-only
# マイグレーション名を指定する
prisma migrate dev --name
# seedの適用をスキップする
prisma migrate dev --skip-seed
# generatorの利用をスキップする
prisma migrate dev --skip-generate
マイグレーションの解決
migrate resolveコマンドを使用すると、失敗したマイグレーションを適用済み(ベースラインをサポート)またはロールバック済みとしてマークすることで、本番環境でのマイグレーション履歴の問題を解決できます。
このコマンドは失敗したマイグレーションに対してのみ使用できることに注意してください。成功したマイグレーションでこのコマンドを使用しようとすると、エラーが発生します。
# マイグレーション名を指定して適用済みにする
prisma migrate resolve --applied 20240101000000_add_posts_table
# マイグレーション名を指定してロールバックする
prisma migrate resolve --rolled-back 20240101000000_add_posts_table
マイグレーション状況の確認
prisma migrate status
マイグレーションのリセット
開発環境でのみ使用
- 可能であればデータベース/スキーマを削除し、データベース/スキーマを削除できない環境であればソフトリセットを実行する。
- データベース/スキーマが削除された場合、同じ名前で新しいデータベース/スキーマを作成します。
- すべてのマイグレーションを適用します。
- シードスクリプトの実行
# リセットを行う
prisma migrate reset
# 警告をスキップ
prisma migrate reset --force
# generatorやseedをスキップ
prisma migrate reset --skip-generate --skip-seed
本番環境でのみ使用するコマンド
migrationのデプロイ
migrate deploy コマンドは、保留中の移行をすべて適用し、データベースが存在しない場合は作成します。主に非開発環境で使用されます。このコマンドは
- データベースのドリフトやPrismaスキーマの変更を検索しません。
- データベースをリセットしたり、成果物を生成したりしません。
- シャドウデータベースに依存しない
prisma migrate deploy