[PHP-users 15323]InterBase関数でBLOB型挿入時の不具合

ogiso @ isquare.co.jp ogiso @ isquare.co.jp
2003年 5月 16日 (金) 11:28:54 JST


初めて投稿させていただきます。

RedHat7.3上でphp4.3.1、DBにFireBird1.0を使っています。

BLOB型のカラムにテキストデータをを挿入したいのですが、
挿入したデータが途中で切れてしまいます。

コードはこんな感じです。

テーブル定義

CREATE TABLE "M_TEST_BLOB"
(
  "id"      INTEGER,
  "blob"    BLOB SUB_TYPE TEXT SEGMENT SIZE 80 CHARACTER SET SJIS_0208
);

$trans = ibase_trans($conn);

$blob_id = ibase_blob_create($trans);

$string=<<<EOSTR
ここに4000行ほどのテキストデータ(システムログです。)
EOSTR;

print $string;

ibase_blob_add($blob_id,$string);

$blob_id_str = ibase_blob_close($blob_id);

ibase_query($trans,'INSERT INTO m_test_blob ("id","blob") VALUES (1,?)',
$blob_id_str);

$commit = ibase_commit($trans);

これで、プリント文では最後まで表示されますが、DBに挿入されているデータは途
中で切れています。
切れているところは特に特殊な文字列というわけでもないですし,インサートされて
いるデータをテキストに展開して
サイズを調べてみても特に決まったサイズで切れているわけではないためサイズの
制限のようなものに
引っかかっているわけでもなさそうです。(25KB〜50KBぐらいまでばらつきがあ
る。)

php4.2.3でも試しましたが同様の症状が出ます。

これはDBがInterBaseではなくFireBirdを使ったときの固有の問題なのでしょうか?
それともどこか設定などで回避できるものでしょうか?
ご教授お願いします。


--

Ayumu Ogiso






PHP-users メーリングリストの案内