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

Postgresql:no se puede eliminar la base de datos debido a algunas conexiones automáticas a la base de datos

Puede evitar futuras conexiones:

REVOKE CONNECT ON DATABASE thedb FROM public;

(y posiblemente otros usuarios/roles; consulte \l+ en psql )

Luego puede finalizar todas las conexiones a esta base de datos excepto la suya:

SELECT pid, pg_terminate_backend(pid) 
FROM pg_stat_activity 
WHERE datname = current_database() AND pid <> pg_backend_pid();

En versiones anteriores pid se llamaba procpid así que tendrás que lidiar con eso.

Dado que ha revocado CONNECT derechos, lo que sea que estaba tratando de conectarse automáticamente ya no debería poder hacerlo.

Ahora podrá soltar la base de datos.

Esto no funcionará si está utilizando conexiones de superusuario para operaciones normales, pero si está haciendo eso, primero debe solucionar ese problema.

Una vez que haya terminado de eliminar la base de datos, si crea la base de datos nuevamente, puede ejecutar el siguiente comando para restaurar el acceso

GRANT CONNECT ON DATABASE thedb TO public;