每当我尝试删除数据库,我得到以下错误:

ERROR:  database "pilot" is being accessed by other users
DETAIL:  There is 1 other session using the database.

当我使用:

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

我终止了来自该数据库的连接,但如果我试图在此之后删除数据库,则有人以某种方式自动连接到该数据库并给出此错误。那是什么? 除了我,没人用这个数据库。


当前回答

Postgresql12

流行的回答对我没有帮助。

对我来说一个不明显的解决方案:如果使用kafka/rabbit,在DROP TABLE之前禁用管理器

sudo service supervisor stop

其他回答

在macOS中尝试通过控制台使用以下命令重新启动postgresql数据库:

brew services restart postgresql

Postgresql12

流行的回答对我没有帮助。

对我来说一个不明显的解决方案:如果使用kafka/rabbit,在DROP TABLE之前禁用管理器

sudo service supervisor stop

在终端试试这个命令:

ps -ef | grep postgres

你会看到:

501 1445 3645 0 12:05AM 0:00.03 postgres: sasha dbname (本地)闲置

第三个数字(3645)是PID。

你可以删除这个

sudo kill -9 3645

然后启动PostgreSQL连接。

手动启动:

pg_ctl -D /usr/local/var/postgres start

我找到了这个问题的解决方案,尝试在终端运行这个命令

ps -ef | grep postgres

使用此命令终止进程

sudo kill -9 PID

如果对机器上的其他服务没有潜在影响,只需重启postgresql服务