2016-04-06 25 views
-1

今日はOracleに多くの問題があります。CLOB、Oracleに挿入できません

大きな文字列をCLOBフィールドに挿入しようとしています。ORA-01461: can bind a LONG value only for insert into a LONG columnを取得しています。

これは既にCLOBですが、なぜLONGを使用するように指示していますか?

表の定義:問題の

CREATE TABLE crawler (
     ID NUMBER(10,0) NOT NULL ENABLE, 
     TITLE CLOB NOT NULL ENABLE, 
     URL VARCHAR2(2000) NOT NULL ENABLE, 
     BODY CLOB NOT NULL ENABLE, 
     DEPTH NUMBER(10,0) DEFAULT 1 NOT NULL ENABLE, 
     UPDATED NUMBER(10,0) NOT NULL ENABLE, 
     LINKED_FROM CLOB NOT NULL ENABLE, 
     CRAWLED NUMBER(10,0) DEFAULT 0 NOT NULL ENABLE, 
     CONSTRAINT crawler_pk PRIMARY KEY (id), 
     CONSTRAINT crawler_uni UNIQUE (url) 
    ); 

声明:

UPDATE sindex SET title = :title, body = :body, depth = :depth, updated = :updated, linked_from = :linked_from, crawled = :crawled WHERE url = :url 

バウンド:(PHPのvar_dump()経由)

array 
    ':url' => string 'https://rockwell.ourtownamerica.com/' (length=36) 
    ':title' => string 'Unknown Title' (length=13) 
    ':body' => string 'Intranet | Our Town America Marketing Business/Order Forms Direct Mail Download Logos E-Mail Marketing Graphics Clipart Graphic Forms Graphics Samples Our Town Web Store Proofs Sales Dashboard Sales & Marketing Tools Sales Report Testimonials Vendor Portal Sites You Tube Information Current Unordered Zips Deadlines Extra Names Available EDDM Quote Graphics Status Historical Name Search Invoice Inserts Latest News Maps Console Media Archive National Survey Results Offer Research Current vs Proven Offer My Be'... (length=4509) 
    ':depth' => string '0' (length=1) 
    ':updated' => int 1459969041 
    ':linked_from' => null 
    ':crawled' => int 1 

どうすればいいですか?また、

Error: SQLSTATE[HY000]: General error: 1461 OCIStmtExecute: ORA-01461: can bind a LONG value only for insert into a LONG column (/core-php-src-5.2.5/php-5.2.5/ext/pdo_oci/oci_statement.c:146)

は、Oracle可能です..私は、ので、多分CLOBは、右のタイプではないだけでなく、この列を検索する必要がありますが、それは最大の私の知る限りだと、それはまだ私の文字列を保持することはできません私が後でそれを検索することができるように私のデータを扱うのか?もしそうなら、どうですか?

+0

おそらくOracleは正しいDBではありません...オブジェクトデータベース – quazardous

+0

のGoogleでこのプロジェクトに利用可能なものはすべてあります。ファイルシステム用に保存してください。 –

+0

よくOracleはデータをファイルに保存します。p必要な場合は、Oracle FSがあります。 Oracle DBfs! – quazardous

答えて

2

一般的なタイプのブロブを直接挿入することはできません。ファイル記述子またはストリーム記述子をバインドする必要があります。 http://php.net/manual/en/pdo.lobs.php

キャスティングでは、utl_raw.cast_to_varchar2でutl_rawパッケージを使用できます。

ただし、varchar2の最大長に制限されています。

+0

基本的には、私のブロブをファイルに保存する必要があります。 –

+0

記述子ファイル、ストリーム、またはメモリを開く必要はありません – quazardous

+0

* LOB列を正確に検索することはできません。 –

関連する問題