Pivotal Knowledge Base

フォローする

データベース上でクエリーを実行すると "FATAL: Invalid input for statement_mem. Must be less than max_statement_mem (xxx kB)." が発生する

環境

製品 バージョン
GPDB 全てのバージョン
OS 全てのバージョン

事象

データベース上でクエリーを実行しようとすると、以下のエラーメッセージが発生する。

FATAL:  Invalid input for statement_mem. Must be less than max_statement_mem (1048576 kB).

原因

この問題は、エラーメッセージに記述されているように、statement_mem パラメーターに、max_statement_mem パラメーター値以上の値が指定されているという、間違った設定に起因する。

flightdata=# show statement_mem;
 statement_mem
---------------
 1GB
(1 row)

flightdata=# show max_statement_mem;
 max_statement_mem
-------------------
 1024MB
(1 row)

特に、接続先データベースに対して、任意のユーザーが接続する際に、statement_mem パラメーター値が動的に設定されるような場合に、この問題が発生している。

flightdata=# select datname,datconfig from pg_database;
  datname   |       datconfig
------------+-----------------------
 flightdata | {statement_mem=1GB}

解決策

postgresql.conf にて、statement_mem パラメーター値を、max_statement_mem パラメーター値よりも小さい値に変更する。

上述のように、statement_mem パラメーター値が動的に指定される場合は、システムのデフォルト値を指定するよう値の再設定を行う。

alter database <データベース名> reset statement_mem;

あるいは、statement_mem パラメーター値が、max_statement_mem パラメーター値よりも小さい値となるよう設定変更を行う。

alter database <データベース名> set statement_mem='<値>';

コメント

Powered by Zendesk