PrismaはNode.jsとTypeScript用のORMで、型安全なデータベースアクセスが強みです。
まずはパッケージのインストールから始めましょう
または、Yarnを使用する場合:
次に、Prismaを初期化します
初期化後に生成されるファイル:
📄 prisma/schema.prisma: スキーマ定義ファイル
📄 .env: 環境変数ファイル
schema.prismaファイルでデータモデルを定義します
スキーマ関連:
マイグレーション関連:
データ操作・管理:
Next.jsでPrisma Clientを使用する際はシングルトンパターンを採用します
ホットリロードによる接続数の問題を避けるため!
App Router(Server Components)での使用例:
ユーザー一覧
{users.map(user => ({user.name}
投稿数: {user.posts.length}
Supabaseを使用する場合は接続モードに注意が必要です
環境変数の設定:
🔹 DATABASE_URL: アプリケーションのクエリ用(ポート6543)
🔹 DIRECT_URL: マイグレーション用(ポート5432)
ローカル開発環境の設定:
本番環境(Vercel + Supabase)の設定:
VercelにNext.js + Prismaのプロジェクトをデプロイする際の設定
ビルドコマンドの修正(package.json):
Prisma Clientを使用したCRUD操作の例
データの取得(Read):
データの作成(Create):
データの更新と削除:
複数の操作を一つのトランザクションとして実行する方法
マイグレーションの基本的な流れ:
この操作によりprisma/migrationsディレクトリに新しいマイグレーションファイルが作成されます
本番環境でのマイグレーション:
これは、CIパイプラインやデプロイスクリプトに組み込むことができます
よく発生する問題とその解決策
マイグレーションが応答しない問題
🔹 症状: npx prisma migrate devが応答しない
🔹 原因: DIRECT_URLのポート番号が間違っている可能性
🔹 解決策: ポート番号を5432に変更
PrismaClientInitializationError
🔹 症状: アプリケーション実行時にエラー発生
🔹 原因: 環境変数の設定ミスや接続情報の誤り
🔹 解決策: Vercelの環境変数設定を確認、schema.prismaにdirectUrlが設定されているか確認
Supabaseとの接続エラー
🔹 症状: ローカルでは動作するが、デプロイ後に接続エラー
🔹 解決策: schema.prismaにdirectUrlを追加、環境変数にDIRECT_URLを追加