[解決済み] Postgresql - DBへの自動接続があるため、データベースを削除できない。
2022-02-25 19:38:22
質問
データベースを削除しようとすると、必ず次のようなメッセージが表示されます。
ERROR: database "pilot" is being accessed by other users
DETAIL: There is 1 other session using the database.
私が使う場合
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'TARGET_DB';
そのDBからの接続を終了させたのですが、その後データベースを落とそうとすると、なぜか誰かが自動的にそのデータベースに接続し、このエラーを出します。何が原因なのでしょうか? このデータベースは私以外誰も使っていません。
どうすればいいですか?
今後接続できないようにすることができます。
REVOKE CONNECT ON DATABASE thedb FROM public;
(および他のユーザー/ロールの可能性もあります。
\l+
で
psql
)
そして、自分以外のこのデータベースへの接続をすべて終了させることができます。
SELECT pid, pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = current_database() AND pid <> pg_backend_pid();
古いバージョンでは
pid
と呼ばれていました。
procpid
ので、それに対応する必要があります。
を取り消したので
CONNECT
の権利により、自動接続を行おうとしていたものは、もう行えないはずです。
これでDBを落とせるようになります。
通常の操作でスーパーユーザー接続を使用している場合はうまくいきませんが、その場合はまずその問題を解決する必要があります。
データベースの削除が完了した後、再度データベースを作成する場合は、以下のコマンドを実行することで、アクセス権を復元することができます。
GRANT CONNECT ON DATABASE thedb TO public;
関連
-
[解決済み] PostgreSQLでDATE Differenceを計算する方法は?
-
[解決済み] Ubuntu 18.04でPostgreSQLを再起動する方法
-
[解決済み] PostgreSQLでデータベースのコピーを作成する
-
[解決済み] PostgreSQLデータベースにアクティブな接続がある場合、そのデータベースを削除する方法は?
-
[解決済み] PostgreSQLデータベースへのSQLダンプのインポート
-
[解決済み] PostgreSQLデータベースの別サーバーへのコピー
-
[解決済み】PostgreSQLで読み取り専用ユーザーを作成する方法は?
-
[解決済み】psqlを使用して、データベースにインストールされている拡張機能を一覧表示するにはどうすればよいですか?
-
[解決済み】Postgresに一括挿入を行う最速の方法は何ですか?
-
[解決済み】PostgreSQLで、既存のテーブルに自動インクリメントの主キーを追加する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ERROR: テーブル "tablename" の更新または削除は外部キー制約に違反します。
-
[解決済み] Postgresql Select rows where column = array (列 = 配列)
-
[解決済み] Postgresqlの再起動方法
-
[解決済み] ポストグレス \コピー構文
-
[解決済み】postgreSQL で既存のテーブルに対して "create table" SQL 文を生成する方法
-
[解決済み】Postgresのインストール時に入力したパスワードを忘れてしまいました。
-
[解決済み】ライブラリがロードされない。/usr/local/opt/readline/lib/libreadline.6.2.dylib
-
[解決済み】PostgreSQLで、既存のテーブルに自動インクリメントの主キーを追加する方法は?
-
[解決済み】PostgreSQLでタイムゾーンがある場合とない場合のタイムスタンプの違いについて
-
[解決済み】PostgreSQLでUPSERT(MERGE、INSERT ... ON DUPLICATE UPDATE)する方法とは?