僕は発展途上技術者

postgres へのクライアントからの接続を強制切断する ruby スクリプト

DB に postgres を使って rails の開発をおこなっていて、スキーマを大幅変更、面倒なので db を一旦削除して再作成ってときがある。


しかし、


% rake db:drop


とやって db を削除しようとしても、


Couldn't drop test_development : #<ActiveRecord::StatementInvalid: RuntimeError: ERROR C55006 Mdatabase "test_development" is being accessed by other users Fdbcommands.c L674 Rdropdb: DROP DATABASE IF EXISTS "test_development">


というエラーが表示されてできないときがある。


pgAdmin3 のような GUI ツールから db の操作をおこなっているとこれが確実に起きる。pgAdmin3 のようなクライアントからの接続が残っている限り、postgres では db を削除できないようだ。


でも、開発環境ではいちいち pgAdmin3 を閉じたりなどして接続を切るのも面倒。


そこで、ちょっと乱暴だが、postgres へのクライアントからの接続を強制切断する ruby スクリプトを書いてみた。


postgres への接続プロセスの pid を調べ、sudo kill -9 しているだけ。


もし使う場合は、各環境に応じて変更して自己責任でお使いください。


プロフィール

アーカイブ

最近のエントリー