[PHP-users 4634] Re: ラージオブジェクト登録
Yasuo Ohgaki
php-users@php.gr.jp
Wed, 09 Jan 2002 18:42:59 +0900
AKUNE Yutaka wrote:
> 阿久根です。今年もよろしくお願いします。
>
>
> On Tue, 08 Jan 2002 16:32:53 +0900
> GUU <guu_ml@reguler-c.com> wrote:
>
>
>>-----------------------------------------------------
>> pg_exec ($con, "begin");
>> $result=pg_exec($con,$sql);
>>
>> if($ary[kiji_gazou]!="none"){
>> $fn=fncCopyFile($ary[kiji_gazou]);
>> pg_loimport($fn);
>>
>> }
>>
>> pg_exec ($con, "commit");
>>-----------------------------------------------------
>>$sqlは、既に単独でインサート成功しているSQL文が入っています
>>
> ---[ 略 ]---
>
>>このコード実行に関してはエラーは発生しなかったのですが、ODBC接続でACCESS
>>からカラムを見ても、何も入っていませんでした。psqlでも同様でした。
>>データが登録されたことを確認する手段が、間違っているのでしょうか?
>>そもそもフィールドをどうやって指定するのでしょうか?(まったくやり方が違っ
>>ている気もしますが・・・^^;;)
>>
>
> この $sql が何をしているのか、みているのはどのカラムかも分かりませんが・
> ・・
>
> ラージオブジェクトを格納しても、その格納したオブジェクトの ID を取得して
> おかないと意味がありません。pg_loimport() の戻り値がその ID になります。
> ラージオブジェクトが実際に格納されるのは、システムカタログの
> pg_largeobject テーブルです。このテーブルの loid フィールドの値がオブジェ
> クトのIDとなります。ちゃんとデータが登録されたかどうかは、この loid とイ
> ンポート時の戻り値のIDを照合することで可能です。
>
> ただ、この pg_largeobject にはファイル名を保存しておけないので、私の場合
> は別個にラージオブジェクトの管理テーブルのようなものを作っておき、そこに
> pg_loimport() の戻り値(オブジェクトID)と対にしてファイル名を登録してます。
>
> ※PHP-4.0.6でラージオブジェクトを触っているとよく落ちるようです。
Large objectを利用する場合には必ずtransactionが必要なため、よくPostgreSQL
のバックエンドからNOTICEメッセージがPHPに送られます。4.0.6にはバグがあるので
クラッシュします :)
--
Yasuo Ohgaki
yohgaki@dd.iij4u.or.jp
__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo! http://bb.yahoo.co.jp/