はじめに
redshiftでDROP DATABASEしたらエラーが出たのでその対処方法を残します。
DROP DATABASE "hogehoge";
ERROR: database "hogehoge" is being accessed by other users
調査
ぐぐると、Postgresqlの文献ですが以下が見つかりました。
どうやら誰かのセッションが残っている様子。
対処
セッション一覧を出してprocpid列に出てきた値をメモります。複数件あれば全部メモります。
自分は4件のセッションがありました。
SELECT * FROM pg_stat_activity WHERE datname = 'hogehoge';
pg_terminate_backend関数でセッションを切断していきます。複数セッションが残っているのであればその回数分だけこのSQLをたたきます。
select pg_terminate_backend(procpidの値) from pg_stat_activity
where datname = 'hogehoge';
自分は、削除できないセッションが1件だけありました。
それはいま自分がつないでいるセッションなので消せないのだと思うんですが詳細調べる前に次に進んでしまいました...
結果
(1件だけ削除できないセッションがあったけど)無事にDROPできました。
DROP DATABASE "hogehoge";
文献
とても参考になりました。ありがとうございます。