ORA-01461: can bind a LONG value only for insert into a LONG column
這個Oracle錯誤可能大家都多少見過吧。也讓人郁悶過吧。現(xiàn)在說一句,希望能幫到大家:
這個錯誤一般不是數(shù)據(jù)庫里的字段類型問題,而是你的ojdbc版本有些問題,也不能說不與數(shù)據(jù)庫不匹配。大家可以換成10.2或9的版本試試,可能讓你一陣驚喜哦。本人推薦使用10.2的ojdbc
更新091014:
 如果把insert或者update語句直接在PL/SQL里面跑,或者拼成sql語句在程序里執(zhí)行,都是沒問題的,但是如果是用ojdbc驅(qū)動的方法(包括hibernate),就會出錯。此外,在另外一臺Linux的機器上的Oracle9.2.0.8就沒問題(生產(chǎn)機是Windows系統(tǒng),Oracle9.2.0.1)。

    經(jīng)過google和多個交叉測試,排除了操作系統(tǒng)、中間件平臺(Weblogic)的問題。在紅偉的指點下,找到這么一個網(wǎng)頁,把這個問題的原因說得好像比較清楚(wordpress的,需要翻墻):http://vsadilovskiy.wordpress.com/2007/10/19/ora-01461-can-bind-a-long-value-only-for-insert-into-a-long-column/

    里面提到的解決辦法是,用新版的ojdbc驅(qū)動,然后把OracleDatasource的oracle.jdbc.RetainV9LongBindBehavior屬性設(shè)為true,經(jīng)測試,并不生效。測試了從Oracle網(wǎng)站下載的不同版本(9i,10g各小版本)的ojdbc.jar,情況依舊。

      最后,把生產(chǎn)機的Oracle升級到9.2.0.8,問題解決
大家,也只能用上面兩個方法試試了,應(yīng)該能解決問題。但換jar我個人工作中用過,不是一個有[保證]的辦法。



開心過好每一天。。。。。