ORA-01461: 僅能夠爲插入 LONG 列的 LONG 值賦值」解決辦法

ORA-01461: 僅能夠爲插入 LONG 列的 LONG 值賦值」解決辦法 html

今天遇到的一個問題:前端

直接修改數據表中的某些字段數據內容時報錯:java

 

ORA-01461: 僅能夠爲插入 LONG 列的 LONG 值賦值」解決辦法mysql

 

上網查詢發現解決途徑有:sql

 法1,數據庫字符集應該是UTF-8的,對於UTF-8或歐洲的某些字符集,oracle在存儲時,對於一個字符須要2個或3個字節的存儲空間,雖然表定義 中爲varchar2(4000),可是其實該字段的data_length爲其2倍或3倍長。這種狀況下oracle會把data_length長度超 過4000的當作LONG型處理,你的表中有兩個這樣的字段,插入數據時至關於同時操做2個LONG字段,因此報錯。數據庫

 當時的解決辦法:建議減少字段長度或拆分。實在須要的,能夠轉而採用CLOB字段類型。 oracle

 

但個人修改的數據不可能超過這個長度,就像http://www.blogjava.net/allen-zhe/archive/2008/05/06/198627.html 評論1樓所說,個人長度過小,根本不會是這個問題jsp

此法pass!測試

 

法2,採用Oracle 10g最新的ojdbc14.jar驅動替換原有的驅動。編碼

我直接在數據庫中操做的,應該說是用不到這些驅動的。此法不可用於個人狀況。

 


ORA-01461: can bind a LONG value only for insert into a LONG column
      開發項目,今天又難到問題。junit測試寫數據到oracle時,出現:ORA-01461: can bind a LONG value only for insert into a LONG column錯 誤,鬱悶,試了幾回發現,中文才會有這個問題,並且jsp頁面裏輸入的中文又不會報這個錯(前端是struts)。像mysql的話,頗有多是數據庫字 符編碼問題,就懷疑是否爲字符編碼問題(這種思惟不知道會不會很傻),由於項目全部編碼都是utf-8, 看了下oracle是zhs16GBK。而後就建一個gbk的項目來測試,結果仍是出現此問題。後來就換用舊系統的classes12.jar驅動測試 下,^_^, 不會了,太好了。看了下classes12.jar的版本是9.0.2.0.0的並且又是classes12.jar不爽,後來看到一個帖子,說:用9的和10.2的沒有此問題,我回去看下以前出問題的版本是10.1.0.2.0,鬱悶,用的數據庫是10.2.0.1.0。立刻換成10.2.0.1.0的版本。當初不注意,今天花了我幾個小時。我一直覺得jdbc是數據庫對應的。對應的jdbc在oracle安裝目錄能夠找到oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar問題總算解決,^_^ 
相關文章
相關標籤/搜索