僕は発展途上技術者

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 しているだけ。


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



プロフィール

株式会社まちクエスト代表、つくる社LLC代表。

Raspberry Piではじめる どきどきプログラミングを書きました。

Amazonから図書館検索 Libron、iPhoneアプリ ひらがなゲーム かなぶん を作っています。

Twitter @jishiha

最近のエントリー

アーカイブ