删除postgresql数据库时报错database xxx is being accessed by other users

今天要删除一个数据库时,不管是直接在图形化界面上删除还是命令行

DROP DATABASE mydb;

删除,都会报错提示

ERROR:  database "mydb" is being accessed by other users
DETAIL:  There are 3 other sessions using the database.

这是因为当前数据库也在被别的用户使用,这里要删除也要慎重,确保数据库是可以被删除的再继续操作。
解决方式:
断开连接到这个数据库上的所有链接,再删除数据库。怎么断开呢?在PostgreSQL 9.2 及以上版本,执行下面的语句:

SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE datname='mydb' AND pid<>pg_backend_pid();

再执行

drop DATABASE mydb;

删除成功

语句说明:

  • pg_terminate_backend:用来终止与数据库的连接的进程id的函数。
  • pg_stat_activity:是一个系统表,用于存储服务进程的属性和状态。
  • pg_backend_pid():是一个系统函数,获取附加到当前会话的服务器进程的ID。

原博链接:https://www.cnblogs.com/hellojesson/p/10037315.html

猜你喜欢

转载自blog.csdn.net/qq_24095055/article/details/90713678