PostgreSQL データベースを削除するスクリプトを作成する必要があります。データベースへの接続は多数ある可能性がありますが、スクリプトではそれを無視する必要があります。
DROP DATABASE db_name
開いている接続がある場合、標準クエリは機能しません。
どうすれば問題を解決できますか?
ベストアンサー1
これにより、あなた以外の既存の接続が切断されます:
pg_stat_activity
削除する pid 値を照会して取得し、SELECT pg_terminate_backend(pid int)
それらに対して発行します。
PostgreSQL 9.2 以降:
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'TARGET_DB' -- ← change this to your DB
AND pid <> pg_backend_pid();
PostgreSQL 9.1 以下:
SELECT pg_terminate_backend(pg_stat_activity.procpid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'TARGET_DB' -- ← change this to your DB
AND procpid <> pg_backend_pid();
すべての接続を切断したら、切断して、削除しようとしているデータベースではない別のデータベースからの接続から DROP DATABASE コマンドを発行する必要があります。
procpid
列名が に変更されていることに注意してくださいpid
。このメーリングリストのスレッド。