sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo eliminar una base de datos PostgreSQL si hay conexiones activas con ella?

Esto eliminará las conexiones existentes excepto la tuya:

Consulta pg_stat_activity y obtenga los valores de pid que desea eliminar, luego emita SELECT pg_terminate_backend(pid int) para ellos.

PostgreSQL 9.2 y 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 y 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();

Una vez que desconecte a todos, tendrá que desconectarse y emitir el comando DROP DATABASE desde una conexión de otra base de datos, no la que está tratando de eliminar.

Tenga en cuenta el cambio de nombre de procpid columna a pid . Vea este hilo de la lista de correo.