目次
状況
Next.jsで作成したアプリケーションにおいて、Prismaで定義したスキーマをデータベースに作成する際に次のコマンドを実行しました
npx prisma migrate dev --name init
このコマンドを実行すると、エラーは表示されないものの、処理が終了しないという問題が発生しています。
解決方法
Connection pooler ModelをTransaction modelからsession modelに変更する
解説
Transaction modelとsession modelでポート番号が違う
ポート番号6543=>5432
URIの形式
postgres://postgres.[USER]:[YOUR-PASSWORD]@[revision]:[port]/postgres
Transaction model
postgres://postgres.[USER]:[YOUR-PASSWORD]@aws-0-ap-northeast-1.pooler.supabase.com:6543/postgres
Session model
postgres://postgres.[USER]:[YOUR-PASSWORD]@aws-0-ap-northeast-1.pooler.supabase.com:5432/postgres
公式ドキュメントによると
-
session model
- セッション モードは、データベースに直接接続するのと近い
-
transaction model
- サーバーレス環境から接続する場合は、トランザクション モードが推奨
supabase公式ドキュメント/connection-pooler
それでも解決しない場合
- データベース接続の確認:データベースが正しく稼働しており、Prismaが接続できているか確認する
- Prismaの設定ファイル:prisma/schema.prismaや.envファイルが正しく設定されているか確認する
- ログの確認:Prismaのログやデータベースのログにエラーメッセージが出ていないか確認する
- コマンドの再実行:一度コマンドを中断して、再度実行してみる
- 依存関係の再インストール:node_modulesディレクトリを削除してから、npm installまたはyarn installを実行する