Posted in Web, ruby at 0:24:20 by ジュンヤ

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

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

Webカテゴリの最近の記事             

-->

コメント・トラックバック

この記事のトラックバックURL

コメントを残す