Date: Thu, 1 Apr 1999 00:43:55 +0900 (JST) From: Jun Kuwamura X-Sender: juk@earth.astea.rccm.co.jp To: pgsql-jp@sra.co.jp cc: Plamo Linux ML Subject: [pgsql-jp 7811] Re: =?ISO-2022-JP?B?GyRCJUYhPCVWJWskWCROP3RDTSVHITwlPyUzJVQhPCRLJEQkJBsoQg==?= =?ISO-2022-JP?B?GyRCJEY2NSQoJEYkLyRAJDUkJCEjGyhC?= くわむらです。 その後、DMで頂いたエラーメッセージで気になるところがありました。 > [502]postgres@server1: root> csvtopg /usr/local/pgsql/kojin.csv | psql -c > "copy boshunin from stdin" meibo > resetting connection 現在は普段6.4.2(Plamo-1.4.x)を使ってまいて問題なくできたのです が、6.3.2(Plamo1.3.x) の方でcopyコマンドを実行してみたところ同 様のエラーメッセージが出ました。原因が同じかどうかはわかりませ んが、現在のところ不明です。 そこで、pg_upgrade で、6.4.2 にアップグレードしようとしました が、手作業が必要でした。6.3 のDBMSで "pg_dumpall -s -z" をして、 6.4 で pg_upgrade をすればできると` man pg_upgrade` は書いている のですが、自分のDBには幾つか問題がありました。 o タイプに char16 を使っているテーブルがあった。 o 登録してあったC言語ファンクションのローダブルオブジェクトを 消してしまっていた(DROP FUNCTIONしないまま)。 o 他にもなにかあったかも、たとえば、 user というカラム名を使っ ていたとか。 アップグレードは大体以下の手順で行なったのですが、上記の理由か らか pg_upgrade がエラーとなり不完全な状態になってしまい、結局 pg_dump でDB毎にバックアップを取って、ダンプファイルを手直しして から psql でロードしなおしました。 1.古いDBのバックアップ(6.3.x の postmaster が走ってる状態で) postgres% pg_dumpall -s -z > /tmp/db.out postgres% tar cvfz /tmp/data.tgz data 2. 古いパッケージの削除(実際にはこれはしていない) postgres% su # removepkg pgsql632 3. 新しいパッケージのインストール # installpkg pgsql642 # su - postgres postgres% mkdir old postgres% cp /tmp/db.out old/. postgres% tar xvfz /tmp/data.tgz -C old/ postgres% postmaster -S postgres% pg_upgrade -f old/db.out old/data 注意:ローダブルモジュールを使っている場合はコピーしておく。 実際は、removepkg していなかったので、 postgres% cp -a ../pgsql63/lib/modules lib を pg_upgrade の前に行なってコピーした。 # copy コマンドがどうして使えなかったか不明ですが、Plamoの # pgpost でpostal DBを登録するのに使っていてできているはず # なので、不思議。 -- Jun Kuwamura rC Cm ^ ~