[pgsql-jp: 28400] Re: pg_restore で lo がリストアできない
minoru fukuda
fukuda @ kinol.co.jp
2002年 12月 20日 (金) 19:02:03 JST
福田@キノルです。
> 7.3になってキャストの仕組みが変わりました。loとoid
> をキャストしたり比較するためには、次のようにキャストを
> 登録する必要があります。
>
> create cast (lo as oid) with function oid(lo) as implicit;
> create cast (oid as lo) with function lo(oid) as implicit;
>
> さらにこのようにキャストを定義するためにはoid(lo)やlo(oid)
> をIMMUTABLEな関数として定義する必要があります。
>
> pg_dumpのデータが編集できるようなら上記の点に注意して
> 試してみてください。
上記のように create cast を定義してみたのですが、pg_restore が
別のエラーで失敗してしまいます。pg_dump のデータファイルを
tar で展開して、ファイルを編集後、再度 tar でまとめれば良いと
思ったのですが、そうではないのでしょうか?
すみませんが、ご教授ください。
やったこと。
1) tar xvf test.tar <- pg_dump のデータファイル
2) restore.sql で lo 関連の function の後に上記の cast を追加
create cast (lo as oid) with function oid(lo) as implicit;
create cast (oid as lo) with function lo(oid) as implicit;
3) create function oid(lo) ... と create function lo(oid) ... で
immutable を指定。
4) tar cvf test.tar *
5) pg_restore -Ft -d test test.tar
...
pg_restore: [tar archiver] could not find header for file 102.dat in tar archive
のエラーが出力されて終わる。
--
福田稔 Minoru Fukuda
fukuda @ kinol.co.jp
kinol interactive inc.
http://www.kinol.co.jp
pgsql-jp メーリングリストの案内