Kill a postgresql session/connection Kill a postgresql session/connection postgresql postgresql

Kill a postgresql session/connection


You can use pg_terminate_backend() to kill a connection. You have to be superuser to use this function. This works on all operating systems the same.

SELECT     pg_terminate_backend(pid) FROM     pg_stat_activity WHERE     -- don't kill my own connection!    pid <> pg_backend_pid()    -- don't kill the connections to other databases    AND datname = 'database_name'    ;

Before executing this query, you have to REVOKE the CONNECT privileges to avoid new connections:

REVOKE CONNECT ON DATABASE dbname FROM PUBLIC, username;

If you're using Postgres 8.4-9.1 use procpid instead of pid

SELECT     pg_terminate_backend(procpid) FROM     pg_stat_activity WHERE     -- don't kill my own connection!    procpid <> pg_backend_pid()    -- don't kill the connections to other databases    AND datname = 'database_name'    ;


Maybe just restart postgres => sudo service postgresql restart


With all infos about the running process:

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