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=trueでPgbouncerを有効化して、connection_limitで接続数を1に制限することで1つ1つクエリを実行することができるためエラーを回避できます。