PostgreSQLエラー「dropdb: database removal failed: ERROR」の原因と解決方法

LinuxのコンソールなどでPostgreSQLのデータベースを削除するために「dropdb」コマンドを実行した際、削除したいデータベースを削除できない(削除に失敗する)場合がある。

以下は、dropdbコマンドでデータベース「nobuneko」を削除しようとした時に削除できなかった例。

dropdb -U postgres nobuneko
dropdb: database removal failed: ERROR: database "nobuneko" is being accessed by other users

エラーメッセージは、他のユーザがデータベース「nobuneko」にアクセス中であるため、データベースの削除に失敗しました、という意味だ。

このエラーが出た場合、何らかの手段で誰かが削除したいデータベースに接続したままになっている。

CSEなどで接続しているのであれば、接続を切断するとエラーが出なくなり、削除できるようになる。どうしても接続が切れない場合(つまり、何がデータベースに接続しているかの原因などが分からない場合)、PostgreSQLをいったん停止すれば、確実に接続は切れる。

《参考》
/etc/rc.d/init.d/postgresql stop ※PostgreSQLの停止
/etc/rc.d/init.d/postgresql start ※PostgreSQLの起動

削除したいデータベースにアクセスしているユーザがいなくなれば、dropdbコマンドを実行しても「dropdb: database removal failed: ERROR」というエラーが出なくなり、削除したいデータベースを削除できる。

前へ

UNetbootin使用中に「sevnz.exe - デバイス タイムアウト」になる原因の1つ

次へ

PostgreSQLエラー「number of page slots needed (20208) exceeds max_fsm_pages (20000)」の原因と解決方法