因为,您正在尝试对
dropDb已打开连接的数据库执行命令。
根据postgres文档:
您无法连接到要删除的数据库。而是,连接到template1或任何其他数据库,然后再次运行此命令。
这是有道理的,因为当您删除整个数据库时,所有引用该数据库的打开的连接都将变为无效,因此建议的方法是连接到其他数据库,然后再次执行此命令。
如果您遇到的情况是,另一个客户端连接到数据库,而您确实要删除该数据库,则可以强制将所有客户端与该特定数据库断开连接。
例如,要强制断开所有客户端与数据库的连接
mydb:
如果PostgreSQL <9.2
SELECT pg_terminate_backend(procpid) FROM pg_stat_activity WHERe datname ='mydb';
其他
SELECt pg_terminate_backend(pid) FROM pg_stat_activity WHERe datname ='mydb';
注意: 此命令需要超级用户特权。
然后,您可以连接到其他数据库,然后
dropDb再次运行命令。



