postgresql 删除数据库

删除 postgresql 数据库时会报错提示:

ERROR:  database "mydb" is being accessed by other users

这是因为当前数据库也在被别的用户使用,删除办法是:

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。