Skip to content

PostgreSQLで一度に扱うパラメータ数の上限は65535まで

Bulk insertで巨大なリクエストを実行していると、以下のようなエラーが返ってくることがあった。

got 71526 parameters but PostgreSQL only supports 65535 parameters

インターネットを見ていると、次のようなエラーもあるらしい。

extended protocol limited to 65535 parameters

この制限は、PostgreSQLのwire protocolでバインドするパラメータのサイズが16bitとして定義されていることに由来する。

この数は行数ではなくパラメータ数なので、次のようなクエリの場合パラメータ数は6としてカウントされる。

INSERT INTO metrics VALUES ($1, $2, $3),($4, $5, $6);