gpt4 book ai didi

postgresql - 如果有事件连接,如何删除 PostgreSQL 数据库?

转载 作者:行者123 更新时间:2023-11-29 11:03:50 26 4
gpt4 key购买 nike

我需要编写一个脚本来删除 PostgreSQL 数据库。它可能有很多连接,但脚本应该忽略它。

当有打开的连接时,标准的 DROP DATABASE db_name 查询不起作用。

我该如何解决这个问题?

最佳答案

这将删除除您之外的现有连接:

查询 pg_stat_activity 并获取您想要终止的 pid 值,然后向它们发出 SELECT pg_terminate_backend(pid int)

PostgreSQL 9.2 及以上版本:

SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'TARGET_DB' -- ← change this to your DB
AND pid <> pg_backend_pid();

PostgreSQL 9.1 及以下版本:

SELECT pg_terminate_backend(pg_stat_activity.procpid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'TARGET_DB' -- ← change this to your DB
AND procpid <> pg_backend_pid();

一旦你断开所有人的连接,你将不得不断开连接并从另一个数据库(不是你试图删除的数据库)的连接发出 DROP DATABASE 命令。

请注意将 procpid 列重命名为 pid。参见 this mailing list thread .

关于postgresql - 如果有事件连接,如何删除 PostgreSQL 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5408156/

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