ORA-01461: LONG値はLONG列にのみバインドできます。

PHPからOracleデータベースにメールの内容を登録する際に発生。

データベースの項目はVARCHAR2最大の4000バイトを設定
内容が4000バイトを超える場合は4000バイトごとに分割して登録する仕様。(内容1、内容2、…、内容8)

4000バイトを超えないように考慮しているのでORA-01461は発生しないはずなのに…
(2バイト文字も考慮して4000〜4001バイトが2バイト文字の場合は3999バイトで分割している。)

メールの内容の文字数を変えて発生するパターンを探っていると
パターン1:内容が4000バイト以下 → 正常(内容1に更新される)
パターン2:内容が6000バイト   → 正常(内容1に4000バイト、内容2に2000バイト更新)
パターン3:内容が6001バイト   → エラー(内容1に4000バイト、内容2に2001バイト更新しようとしてエラー)

2000バイトを超える項目を複数更新しようとすると発生する?
ググってみると同じようなことが発生していた記述を発見。
OCI8と9iの環境で発生する問題のよう(10gでは発生しないとの情報あり)

 (参照) [n年日記]の2008年01月29日(火)
 http://www.unixuser.org/~ysjj/diary/?200801

データベースのバージョンはすぐには変更できないので
とりあえずの対応として
内容1のみINSERTしてから内容2〜8を個別にUPDATEすることでエラーを回避した。