gpt4 book ai didi

postgresql - pg_terminate_backend 在循环中不起作用

转载 作者:行者123 更新时间:2023-11-29 14:31:20 25 4
gpt4 key购买 nike

我做了这样的事情

LOOP 
Exit when 1 = 2;
SELECT pg_terminate_backend(procpid)
FROM pg_stat_activity
WHERE datname = 'wiki';
pg_sleep(10);
END LOOP;

但它只适用于第一次。

下次它会选择上次进程并尝试终止它们(它们已被终止)并抛出异常。

它不会停止,但不会终止新连接。

为什么找不到新连接?

谢谢

最佳答案

pg_stat_activity(以及所有其他 pg_stat_xx View )显示事务开始时间的快照。由于函数(包括 do block )始终在事务中执行,因此您的循环看不到任何变化。

您需要调用pg_stat_clear_snapshot()重置当前事务的统计快照,例如在调用 pg_sleep() 之后。

关于postgresql - pg_terminate_backend 在循环中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51346624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com