解決SQL Error: 1461, SQLState: 72000 can bind a LONG value only

  • 2020 年 1 月 22 日
  • 筆記

問題

SQL Error: 1461, SQLState: 72000 can bind a LONG value only    即:SQL Error: 1461, SQLState: 72000 ORA-01461: 僅能綁定要插入 LONG 列的 LONG 值

解決方案

mysql

暫時沒測試mysql會不會爆該錯誤,若出現類似的可以直接修改為longtext:

-- 修改用戶行為錯誤記錄中資訊欄位類型為longtext  alter table sys_user_behavior_err_info modify column info longtext

oracle方案

-- 修改行為錯誤記錄表info的欄位類型方案(Oracle本身無法直接從VARCHAR2轉為clob)  -- 若有DBMS_REDEFINITION(在線重定義表)許可權,亦可考慮通過DBMS_REDEFINITION更改欄位,其方法據說最安全,但步驟比較複雜。  -- 1.修改用戶行為錯誤記錄中資訊欄位類型為clob    ALTER TABLE SYS_USER_BEHAVIOR_ERR_INFO add info_new clob;  update  SYS_USER_BEHAVIOR_ERR_INFO  set info_new=info,info=null;  commit;  ALTER TABLE SYS_USER_BEHAVIOR_ERR_INFO  modify info long;  ALTER TABLE SYS_USER_BEHAVIOR_ERR_INFO  modify info clob;  update SYS_USER_BEHAVIOR_ERR_INFO  set info=info_new,info_new=null;  commit;  ALTER TABLE  SYS_USER_BEHAVIOR_ERR_INFO  drop column info_new;    -- 2.查詢到表中的索引,如:資料庫SPARKDEV中的SYS_C0051930,每個資料庫中的索引名稱可能名稱不同。    select * from user_indexes  where table_name ='SYS_USER_BEHAVIOR_ERR_INFO'    -- 3.對2中查詢到的index_type為NORMAL的索引執行重建,一般只有1條,若查詢為空則無需執行。此處僅是示例,以實際情況為準。當存在時若不執行2和3可能會導致存儲時報錯:ORA-01502: 索引 'SPARKDEV.SYS_C0051930' 或這類索引的分區處於不可用狀態    alter index SPARKDEV.SYS_C0051930 rebuild online;

擴展

(Clob的寫入和讀取-java)更新資料庫報錯:SQL Error: 1461, SQLState: 72000 ORA-01461: 僅能綁定要插入 LONG 列的 LONG 值

Oracle中表列由VARCHAR2類型改成CLOB

Exit mobile version