LoginSignup
1
0

PostgreSQL データ削除時のエラー: database XXXX is being accessed by other users

Last updated at Posted at 2023-08-15

はじめに

毎回のように遭遇するので備忘録として記しています。

環境

  • DB : PostgreSQL 15
  • ツール:pgAdmin 4

事象

Postgresのデータベースを削除しようとした際に、以下エラーが発生し削除できませんでした。

Error: database 'XXXX' is being accessed by other users
DETAIL: There are 3 other sessions using the database.

対処法

調べてみるとDB接続中の他のセッションがいるため削除できない事によるエラーでした。
心あたりはないものの、まず以下コマンドでDBの接続状況を確認します。

select * from pg_stat_activity where datname = 'データベース名';

結果はこんな感じで表示されます(表示項目は一部抜粋したもの)

pid user_name application_name client_addr ~
1 16414 postgres pgAdmin4 -DB :XXXX 10.51.16.0
2 16415 postgres pgAdmin4 -CONN:6817249 10.51.16.0
3 16399 postgres pgAdmin4 -DB :XXXX 10.68.51.0
  • pid integer
    • バックエンドのプロセスID。後に実行するセッションの切断コマンドで利用します。
  • user_name
    • 接続しているユーザ名
  • application_name text
    • 接続しているアプリケーション名
  • client_addr inet
    • 接続しているクライアントのIPアドレス

※その他の表示項目については公式ドキュメントを参照ください

結果を確認すると、現在接続中のクライアント(10.51.16.0)2つと以前接続した別の開発マシン(10.68.51.0)のセッションが残っていたようでした。

次に接続を強制切断するコマンドを実行(pidは上記で確認したpidを設定)

SELECT pg_terminate_backend(pid);

自身が接続中のコネクション以外を切断します。
自身のpidはpg_backend_pid () ;で得ることができます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0