Supabase+PrismaでConnectorError(ConnectorError { user_facing_error: None, kind: QueryError(PostgresError { code: “42P05”, message: “prepared statement \”s0\” already exists”, severity: “ERROR”, detail: None, column: None, hint: None }), transient: false })] が出た時解決方法

Supabase+Prismaで以下のエラーが発生しました。

ConnectorError(ConnectorError { user_facing_error: None, kind: QueryError(PostgresError { code: “42P05”, message: “prepared statement \”s0\” already exists”, severity: “ERROR”, detail: None, column: None, hint: None }), transient: false })]

こちらの解決方法を紹介します。

目次

解決方法

DATABASE_URLに設定している接続文字列に以下のクエリパラメータを設定する。

  • pgbouncer=true
  • connection_limit=1

の二つを設定します。

以下が例です。

DATABASE_URL="postgresql://postgres.<project_id>:<password>!@aws-0-ap-northeast-1.pooler.supabase.com:6543/postgres?pgbouncer=true&connection_limit=1"

解説

PostgreSQLのエラー内容では、42P05: 準備済み文の重複 となっている。

つまりコネクションプールに同一クエリが残っており重複と判断されてエラーとなっています。

pgbouncer=truePgbouncerを有効化して、connection_limitで接続数を1に制限することで1つ1つクエリを実行することができるためエラーを回避できます。

SupabaseのTIPSリンク集
  • システム開発、アプリ開発
  • マッチングアプリ開発
  • インフラ構築支援等、なんでもご相談ください。
よかったらシェアしてね!
  • URLをコピーしました!
目次