Remover banco de dados PostgreSQL com conexões ativas

Remover banco de dados PostgreSQL com conexões ativas

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/

Leave a Reply

Your email address will not be published. Required fields are marked *