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

问题

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

本文同步分享在 博客“蜜汁炒酸奶”(other)。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值