Necesito acceso exclusivo a una base de datos. ¿Es posible usar un comando SQL para "separar" a todos los demás usuarios de una base de datos postgres. O tal vez cerrando todas las demás conexiones y luego obteniendo acceso exclusivo.
Esto es para pruebas unitarias, y las pruebas solo se ejecutan manualmente, por lo que no hay peligro involucrado. Solo las conexiones muertas viejas se verán afectadas.
No hay otros usuarios que se conecten a estas bases de datos unittest.
Las viejas conexiones muertas provienen del desarrollo. Esto sucede todo el tiempo cuando una prueba que se está escribiendo o falla no sale limpia.
Si alguien también necesita mantener bloqueados a otros usuarios por un tiempo después de desconectarlos en un escenario de producción, vea la respuesta de Scott Marlowe a continuación: /dba//a/6184/2024
Consulte también esta pregunta similar sobre dba: ¿Cómo soltar todas las conexiones a una base de datos específica sin detener el servidor?
fuente
procpid
se cambió el nombre apid
, así que ten cuidado con eso.El problema aquí es doble: primero debe desconectar a esos usuarios y, segundo, debe mantenerlos fuera de su servidor. En lugar de revocar permisos de conexión, generalmente uso pg_hba.conf para rechazar nuevas conexiones de ciertas máquinas y / o usuarios, luego solo hago una parada rápida pg_ctl -m; pg_ctl comienza a eliminar todas las conexiones actuales. Con slony haciendo cambios DDL, esto es prácticamente una necesidad o obtendrá puntos muertos por todas partes.
fuente