首页  >  文章  >  后端开发  >  如何删除当前连接的 Postgres 数据库?

如何删除当前连接的 Postgres 数据库?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-19 20:18:03290浏览

How to Drop a Postgres Database You're Currently Connected To?

在 Postgres 中删除已连接的数据库

您在尝试删除当前连接的数据库时遇到错误:“pq:无法删除当前打开的数据库。”此错误源于 Postgres 中的预期行为,该行为禁止删除与其活动连接的数据库。

此行为是有道理的,因为删除数据库会使引用该数据库的所有打开连接失效。要成功删除数据库,您必须确保不存在活动连接。

推荐方法

推荐方法是连接到不同的数据库并执行 DROP DATABASE 命令从那个连接。这可确保您与要删除的数据库没有任何打开的连接。

强制断开客户端

在其他客户端连接到数据库的情况下你需要删除,你可以强行断开它们。请注意,这需要超级用户权限。

对于 9.2 之前的 PostgreSQL 版本:

SELECT pg_terminate_backend(procpid) FROM pg_stat_activity WHERE datname = 'mydb';

对于 PostgreSQL 9.2 及更高版本:

SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'mydb';

所有客户端被强制断开后,您可以连接到不同的数据库并再次执行 DROP DATABASE 命令。

附加说明

在您的特定代码示例中,您尝试在执行 DROP DATABASE 命令后关闭连接。此步骤是不必要的,并且可能会导致意外行为。只需在执行 DROP DATABASE 命令之前连接到不同的数据库,您将成功关闭与已删除的数据库的连接。

以上是如何删除当前连接的 Postgres 数据库?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn