Porque você está tentando executar
dropDb
comando no banco de dados, ao qual você tem conexão aberta. De acordo com a documentação do postgres:
Isso faz sentido, porque quando você descarta o banco de dados inteiro, todas as conexões abertas que fazem referência a esse banco de dados se tornam inválidas, portanto, a abordagem recomendada é conectar-se a um banco de dados diferente e executar este comando novamente.
Se você estiver enfrentando uma situação em que um cliente diferente está conectado ao banco de dados e você realmente deseja descartar o banco de dados, você pode forçar a desconexão de todos os clientes desse banco de dados específico.
Por exemplo, para forçar a desconexão de todos os clientes do banco de dados
mydb
:Se PostgreSQL <9.2
SELECT pg_terminate_backend(procpid) FROM pg_stat_activity WHERE datname = 'mydb';
Outro
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'mydb';
Observação: Este comando requer privilégios de superusuário.
Em seguida, você pode se conectar a um banco de dados diferente e executar o
dropDb
comando novamente.