Em algumas ocasiões, ao executar o comando para remoção de um banco de dados PostgreSQL, retorna uma mensagem de erro, não permitindo a remoção do banco por causa de ter conexões ativas. Segue a solução para remover banco de dados PostgreSQL com conexões ativas.
postgres=# DROP DATABASE nome_banco; ERROR: database "nome_banco" is being accessed by other users DETAIL: There is 1 other session using the database. postgres=#
Se estiver seguro de que essas conexões são conhecidas e que podem ser removidas, segue abaixo o comando para liberar as conexões e permitir a remoção do banco.
PostgreSQL 9.2 e superior:
SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = 'nome_banco' AND pid <> pg_backend_pid();
PostgreSQL 9.1 e inferior:
SELECT pg_terminate_backend(pg_stat_activity.procpid) FROM pg_stat_activity WHERE pg_stat_activity.datname = 'nome_banco' AND procpid <> pg_backend_pid();
Executada a consulta acima, o comando para remoção do banco pode ser executado sem erros.
DROP DATABASE nome_banco;
Para mais informações, acesse https://www.postgresql.org/docs/