This SO answer splendidamente spiega (citazione completa da araqnid tra le regole orizzontali, poi di nuovo io):
T o database di marchio come non accettare nuove connessioni 'applogs':
update pg_database set datallowconn = false where datname = 'applogs';
Un'altra possibilità sarebbe quella di revocare 'collegare' l'accesso alla banca dati per il ruolo client (s).
Disconnettere utenti dal database = kill backend. Quindi, per scollegare tutti gli altri utenti dal database "applogs", per esempio:
select pg_terminate_backend(procpid)
from pg_stat_activity
where datname = 'applogs' and procpid <> pg_backend_pid();
volta che hai fatto sia di quelli, sei l'unico utente collegato a 'applogs. Sebbene potrebbe esserci effettivamente un ritardo prima che i backend finiscano effettivamente di disconnettersi?
Aggiornamento da MarkJL: V'è infatti un ritardo prima che il backend finiscono disconnessione.
Ora, ancora una volta: Detto questo, si ricordi che la colonna procpid
è stata rinominata in pid
in PostgreSQL 9.2 e versioni successive.
Penso che questo sia molto più utile della risposta di Milen A. Radev che, pur essendo tecnicamente la stessa, non viene fornita con esempi di utilizzo e suggerimenti di vita reale.
pg_cancel_backend() non si disconnette, annulla solo la query corrente. La prossima query può arrivare in qualsiasi secondo usando la stessa vecchia connessione che è ancora lì. –
Riparato. Grazie! –