Database

Como derrubar conexões específicas de um banco de dados PostgreSQL?

RT.DB.FAQ-51384
Para derrubar conexões específicas de um banco, será necessário conectar à instância e executar a função da banco comando pg_terminate_backend(pid).

Exemplo:
Digamos que exista um lock causado pelo pid 78965. Para derrubar, execute:
select pg_terminate_backend(78965).

Para derrubar todas as conexões a um determinado banco, pode-se executar, por exemplo:

PostgreSQL 9.2 e posterior:
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'TARGET_DB'
 AND pid <> pg_backend_pid();

PostgreSQL 9.1 e anterior:
SELECT pg_terminate_backend(pg_stat_activity.procpid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'TARGET_DB'
 AND procpid <> pg_backend_pid();

Ver também: