Вы можете использовать pg_terminate_backend () , чтобы разорвать соединение.Вы должны быть суперпользователем, чтобы использовать эту функцию.Это работает на всех операционных системах одинаково.
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'
;
Перед выполнением этого запроса вам необходимо REVOKE привилегии CONNECT, чтобы избежать новых соединений:
REVOKE CONNECT ON DATABASE dbname FROM PUBLIC, username;
Если вы используете Postgres8.4-9.1 использовать procpid вместо 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'
;