「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のバージョンによるのだと思います。