PostgreSQL: 2014年11月アーカイブ

PostgreSQL の話。

テスト用に DB のコピーを作る時、今までは「新しい DB を createdb で作成」「元の DB を pg_dump で丸々ダンプ(pg_dumpall に非ず)」「psql でダンプファイルから新しい DB にリストア」「ユーザ権限関係とか調整」とか色々作業してたんだけど、一発で DB のコピーできたんだね。

新しい DB を作る時に、

$ createdb -T old_db new_db

って感じでテンプレートデータベースとして元の DB を指定すれば、この DB の内容丸コピー(データも含めて)で新しい DB が作成されるんやね~
知らんかった。
まあ、そんなに何度もやることじゃないので、pg_dump 実行してほげほげで困らなかった(もう、この方法を知ってしまったので今後は pg_dump ほげほげ面倒くさいけれど(^^;)んだけど、今後はこの方法で一発やね。

ただ、この時、old_db がその瞬間使われていたら、

createdb: database creation failed: ERROR:  source database "old_db" is being accessed by other users

みたいなエラーが出ちゃう。
この時は、old_db へのセッションプロセスを全部 kill しちゃおう。

$ ps -auxww|grep post

とかすれば、

postgres  7186  0.0  0.0  6468 1600 pts/2    S+   14:20   0:00 psql old_db

こんなプロセスが引っかかるので、

$ kill -9 7186

とかして殺していく。
これで、createdb が問題なく出来るぞ。むふん。

このアーカイブについて

このページには、2014年11月以降に書かれたブログ記事のうちPostgreSQLカテゴリに属しているものが含まれています。

前のアーカイブはPostgreSQL: 2014年2月です。

次のアーカイブはPostgreSQL: 2015年4月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら