[Supabase + Prisma] “Can’t reach database server at …” というエラーが発生する時の解決方法

Next.js

今までSupabaseのClient Libraryを使用していたのですが、最近、Prismaに乗り換えました。開発中に突然エラーが発生するようになりました。

エラーの内容

Can’t reach database server at `aws-0-ap-northeast-1.pooler.supabase.com`:`5432` Please make sure your database server is running at `aws-0-ap-northeast-1.pooler.supabase.com`:`5432`.

データベースに接続できていないようです。npm run devを実行し直すと元に戻りますが、しばらくすると、このエラーが再発生します。解決方法について調べてみました。

解決方法

以下のSupabaseの公式ドキュメントの通りに設定します。

Prisma | Works With Supabase

.env

DATABASE_URL="postgres://[db-user].[project-ref]:[db-password]@aws-0-[aws-region].pooler.supabase.com:6543/[db-name]?pgbouncer=true&connection_limit=1"
DIRECT_URL="postgres://[db-user].[project-ref]:[db-password]@aws-0-[aws-region].pooler.supabase.com:5432/[db-name]"

// 例
DATABASE_URL="postgres://postgres.xxxxxxxxxxxxxxxxxxxx:mypassword@aws-0-ap-northeast-1.pooler.supabase.com:6543/postgres?pgbouncer=true&connection_limit=1"
DIRECT_URL="postgres://postgres.xxxxxxxxxxxxxxxxxxxx:mypassword@aws-0-ap-northeast-1.pooler.supabase.com:5432/postgres"

schema.prisma

datasource db {
  provider          = "postgresql"
  url               = env("DATABASE_URL")
  directUrl         = env("DIRECT_URL")
}

コードをなんとなく書かずに、公式ドキュメントをよく読みましょう(自戒)。

広告