いくつかの自動接続があります。このクエリを実行する前に
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'
;
、あなたが新しい接続を避けるためにCONNECT権限を取り消すする必要があります:あなたは、最初のコマンドの下に使用して、DBへのすべての接続を終了させることができる上記の後
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'
;
を、してみてくださいあなたのDBの名前を変更します。
参照:今後の参考のためKill a postgresql session/connection
UPDATE
、次のことができるようにする必要があります
-
\c postgres
を名前を変更するデータベースからの切断 - データベースから他のすべてのクライアントを強制的に切断して、名前を変更します。
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE pid <> pg_backend_pid()
AND datname = 'name of database';
- データベース(それは今やゼロクライアントを有していなければならない)そのテーブルをpg_stat_activity列PIDが9.2より前のバージョンにprocpidと命名した
ALTER DATABASE "name of database" RENAME TO "new name of database";
注リネーム。したがって、PostgreSQLのバージョンが9.2より低い場合は、pidの代わりにprocpidを使用してください。
参照:PostgreSQL - Rename database
が、私は「誰もが」そのデータベースを使用していないことをあなたの主張、より多くの(「19回の他のセッション」)のPostgresを信じるように傾いています。おそらく、これらの19セッションはすべて、あなたのクライアントからのものである可能性があります。 'select * from pg_stat_activity'を実行して –
を確認してください。接続を正しく終了しましたか?それ以外の場合は、データベースの名前を変更する前に接続を強制的に閉じてください。 – martennis