海の底には何がある

これは日記だ。ブログじゃない。

アブラカダブラ

科研費のためのサーバー設営。この年末年始はコーディング三昧と思っていたところ、卒論添削とか卒論添削とか卒論添削とか薪割りとか薪割りとか薪割りとか畑の草むしりとか草むしりとかで思うように時間が取れずサーバー以降でスタックして以来何も進まず今日で三が日も終わりじゃないか。まずい。つうことで真面目に取り組む。このサーバはMOMOのクローンも載っていて、折角なのでそれも移行しようと思い、eucで動いていた古いシステムをこの機にUTFに変えてしまえと思ったわけ。クローンだから別にやんなくても良いのだけど、むしろ練習で。で、新しいdbはそりゃUTFで動かすべきだからね。つうことでスタックしていた古いシステムのインストールをなんとか済ませ、
/usr/local/var/postgres93/9.x.x/bin/pg_dumpall > db.out
でデータ書き出し。そして
sudo -u postgres /usr/local/var/postgres93/9.x.x/bin/initdb -D /usr/local/var/postgres/data.old -E utf-8
で古い方のデータクラスタを用意。db.outはeucなので、
iconv -f euc_jp -t utf-8 db.out > convert.out
でUTFに変換。これを
sudo -u postgres /usr/local/var/postgres93/9.x.x/bin/postmaster -D /usr/local/var/postgres/data.old
の後で
sudo -u postgres /usr/local/var/postgres93/9.x.x/bin/psql -f convert.out
で読み込めば良いと思っていたのだけどここでまたスタック。読み込んでくれないの。で、うんうん考えて、そうだdb.outにはset client_encodingってのがあったはず、とconvert.dbファイルを開けると、最初の方に、そこがEUC_JPになっているところがあるので、そこをUTF-8に修正。しかしやっぱり読まない。ここであれこれ試行錯誤すること数時間、やっとファイルには他にも何箇所か文字コードを設定するところがあることに気がつく。で、これを全部修正して、できた。psqlが読み込んでくれるよ!!ばんざい。こうして晴れて、
rm -R /usr/local/var/postgres/data
sudo -u postgres /usr/local/var/postgres94/9.x.x/bin/initdb -D /usr/local/var/postgres/data -E utf-8
の後に、
sudo -u postgres /usr/local/var/postgres94/9.x.x/bin/pg_upgrade -d /usr/local/var/postgres/data.old -D /usr/local/var/postgres/data -b /usr/local/var/postgres93/9.x.x/bin/postgres -B /usr/local/var/postgres94/9.x.x/bin/postgres
で移行完了。あー、長かった。死ぬかと思った。つうことで、1日分の勢力を使い果たしたので、夜はヨメサンとお買い物。車で20分ほどの電解質モールに行ってダウンジャッケットをご購入。ヨメサンが古いのを捨ててくださったので、寒くてしょうがなかったのよ。年末にも一度買いかけたのだけど、そのときは一ミリも値引きがなかったので、様子を見たのだけど、今日はなんと3割引。そうかこれが新春のバーゲンというやつか。初めて経験したけど、ええものやないですか。