PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como descartar um banco de dados PostgreSQL se houver conexões ativas com ele?


Isso descartará as conexões existentes, exceto a sua:

Consulta pg_stat_activity e obtenha os valores de pid que você deseja eliminar e, em seguida, emita SELECT pg_terminate_backend(pid int) para eles.

PostgreSQL 9.2 e superior:
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'TARGET_DB' -- ← change this to your DB
  AND pid <> pg_backend_pid();

PostgreSQL 9.1 e anteriores:
SELECT pg_terminate_backend(pg_stat_activity.procpid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'TARGET_DB' -- ← change this to your DB
  AND procpid <> pg_backend_pid();

Depois de desconectar todos, você terá que desconectar e emitir o comando DROP DATABASE de uma conexão de outro banco de dados, também conhecido como aquele que você está tentando descartar.

Observe a renomeação do procpid coluna para pid . Veja este tópico da lista de discussão.