无法强制删除 Postgres 数据库

Jim*_*Jim 3 postgresql

我正在尝试使用 psql 从 Bash 脚本中强行删除 PostgreSQL 9.4.4 数据库:

#!/bin/bash
db="mydb"
psql -d $db -c "SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = '$db';"
Run Code Online (Sandbox Code Playgroud)

我正在使用此问题中显示的解决方案,但它不起作用。我看到的是这样的:

FATAL: terminating connectoin due to administrator command
server closed the connection unexpectedly
         This probably means the server terminated abnormally
         before or while processing the request.
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我拥有数据库并且我的用户角色具有“超级用户”属性,如我\du在 Postgres 控制台中所做的那样。

a_h*_*ame 6

您正在扼杀自己与该声明的联系。您需要添加and pid <> pg_backend_pid()以排除运行该语句的会话:

SELECT pg_terminate_backend(pid) 
FROM pg_stat_activity 
WHERE datname = '$db'
  and pid <> pg_backend_pid();
Run Code Online (Sandbox Code Playgroud)