トップへ(mam-mam.net/)

phpからpostgresqlにラージオブジェクトを書き込むとエラー

検索:

「phpからpostgresqlにラージオブジェクトを書き込むとエラー」

以下のPHPソースで書き込むとpg_lo_writeでエラーが出ます。何故ですか?
<?php
   $con = pg_connect ("dbname=testdb");
    pg_exec ($con, "begin");
    $oid = pg_lo_create ($con);
    print $oid."\n";
    $h = pg_lo_open ($con, $oid, "w");
    print $h."\n";
    pg_lo_write ($h, "large object data");
    pg_lo_close ($h);
    pg_exec ($con, "commit");
?>

回答

バージョンによると思うのですが、
ソースコード上で省略可能な引数を省略した場合に何故かエラーが表示されるようです。
ソースコードで、

    pg_lo_write ($h, "large object data");
    pg_lo_close ($h);

を以下↓のソースコードにしてみてください。私はこれで動きました。

    pg_lo_write ($con, $h, "large object data");
    pg_lo_close ($con, $h);

第1引数(有効なデータベース接続)は省略可能なはずなのですが、何故かエラーが表示されることがあるようです。
いずれにせよPHP又はPostgreSQLのバージョンによるのだと思います。

ソース