This SO answer explica bellamente (cita completa de araqnid entre las normas horizontales, entonces yo otra vez):
T o Base de datos marca como que no aceptan nuevas conexiones '' applogs:
update pg_database set datallowconn = false where datname = 'applogs';
Otra posibilidad sería la de revocar 'conectar' el acceso a la base de datos para el papel (s) cliente.
Desconectar usuarios de la base de datos = matar back-end. Así que para desconectar todos los demás usuarios de la base de datos "applogs", por ejemplo:
select pg_terminate_backend(procpid)
from pg_stat_activity
where datname = 'applogs' and procpid <> pg_backend_pid();
Una vez que has hecho ambas cosas, usted es el único usuario conectado a '' applogs. Aunque en realidad podría haber un retraso antes de que los backends realmente terminen de desconectarse?
actualización de MarkJL: En efecto, existe un retraso antes de que terminen de backends desconectar.
Ahora yo de nuevo: Dicho esto, tenga en cuenta que la columna procpid
se renombró a pid
en PostgreSQL 9.2 y posterior.
Creo que esto es mucho más útil que la respuesta de Milen A. Radev que, aunque técnicamente es lo mismo, no viene con ejemplos de uso y sugerencias de la vida real.
pg_cancel_backend() no se desconecta, solo cancela la consulta actual. La próxima consulta puede venir en cualquier segundo usando la misma conexión anterior que todavía está allí. –
Reparado. ¡Gracias! –