我在PostgreSQL数据库中有一个表,我需要向它添加200万行。 当我尝试使用INSERT INTO查询时,它会抛出
ERROR: canceling statement due to statement timeout
CONTEXT: PL/pgSQL function cdb_checkquota() line 11 at IF
我尝试重新配置 postgresql.conf 文件(放大 work_mem 和 statement_timeout ),但它无效。
谁能告诉我这里想念的是什么? 顺便说一下,我正在使用INSERT INTO查询,因为我需要复制表数据,所以我在没有主键的情况下处理表数据,以防止重复键。
答案 0 :(得分:1)
我最清楚,只有在statement_timeout
设置时才会触发错误:
denis=# select pg_sleep(2);
pg_sleep
----------
(1 row)
denis=# set statement_timeout to 1;
SET
denis=# select pg_sleep(2);
ERROR: canceling statement due to statement timeout
你试过完全禁用它吗?
set statement_timeout to 0
这应该是默认值,顺便说一句。根据{{3}}(强调我的):
statement_timeout(整数) 从命令从客户端到达服务器的时间开始,中止任何超过指定毫秒数的语句。如果log_min_error_statement设置为ERROR或更低,则还将记录超时的语句。 值为零(默认值)会将其关闭。
建议不要在postgresql.conf中设置statement_timeout,因为它会影响所有会话。