檢查插入的值是否大於該字段數據類型約束的長度。數據庫
這個異常是指,用戶向數據庫執行插入數據操做時,某條數據的某個字段值過長,如 果是varchar2類型的,當長度超過2000,--4000(最大值)之間的時候,oracle會自動將該字段值轉爲long型的,而後,插入操做失 敗。解決辦法是:將此字段的類型改成clob或者blob類型;oracle
可是將oracle數據庫表中的varchar2類型直接改爲clob類型會失敗,解決辦法以下:spa
一、new 一個 tableit
{table
假設咱們有如下的表格:ast
Customer 表格class
欄位名稱 | 資料種類 |
First_Name | char(50) |
Last_Name | char(50) |
Address | char(50) |
City | char(50) |
Country | char(25) |
Birth_Date | datetime |
若要在這個表格上創建一個包括 First_Name, Last_Name, 和 Country 這三個欄位的視觀表,咱們就打入,date
如今,咱們就有一個叫作 V_Customer 的視觀表: 數據類型
V_Customer 視觀表 方法
欄位名稱 | 資料種類 |
First_Name | char(50) |
Last_Name | char(50) |
Country | char(25) |
}
二、通常若是表中數據不重要能夠清空,跳過步驟1直接執行步驟2
執行下列代碼:
alter table FILE_MANAGE modify FILEPATH long;
alter table FILE_MANAGE modify FILEPATH clob;
在進行此操做以前須要清空表中的數據,請提早備份數據,修改完成後,將數據導入便可。
實例:
防止錯誤發生,先備份數據庫。
如下是更新表 TBL_ALERTLOG 字段 ALERTDESC 爲long類型的方法,更新其它表方法同樣。
1.備份原表
CREATE table TBL_ALERTLOG_BAKS
AS SELECT indexid, ALERTLEVEL,ALERTCATEGORY, ALERTDESC,starttime,endtime,isnew,TERMINALID,userid,AlertFlag from TBL_ALERTLOG;
2.清空更新的表字段
update TBL_ALERTLOG set ALERTDESC = null;
3.修改表字段類型
alter table TBL_ALERTLOG modify ALERTDESC long;
在從long轉化爲clob,對於LONG類型,無論有沒有數據存在,
能夠直接修改成CLOB類型
alter table TBL_ALERTLOG modify ALERTDESC clob;
4.更新目標字段爲備份數據(恢復原數據)
update TBL_ALERTLOG set ALERTDESC = (SELECT ALERTDESC FROM TBL_ALERTLOG_BAKS aa WHERE TBL_ALERTLOG.INDEXID = aa.INDEXID)
注:clob不需指定長度。