环境:
数据库:Oracle 9i
数据库字段类型:varchar2(4000)
输入汉字:大于1000字
原因:
我的数据库字符集应该是UTF-8的,对于UTF-8或欧洲的某些字符集,oracle在存储时,对于一个字符需要2个或3个字节的存储空间,虽然表定义中为varchar2(4000),但是其实该字段的data_length为其2倍或3倍长。这种情况下oracle会把data_length长度超过4000的当做LONG型处理,你的表中有两个这样的字段,插入数据时相当于同时操作2个LONG字段,所以报错。
当时的解决办法:建议减小字段长度或拆分。实在需要的,可以转而采用CLOB字段类型。
Caused by: java.sql.BatchUpdateException: ORA-01461: 仅可以为插入 LONG 列的 LONG 值赋值
我在系统的一个页面上加载一个.xml文件时,出现了这个错误。
原因:
当插入数据的长度在1000、2000内,就会抛出这样的错误。
解决方法:
思路:将存储的字符串补上空格,让其超过2000的长度即可,但仅限与紧急解决问题。
1、首先在.java文件中引入import org.apache.commons.lang.StringUtils;
2、在此.java文件的相应的方法里添加如下判断:
// 处理ora-1461问题(clob长度在1000-2000之间会出错)
if (xml.length() >= 1000 && xml.length() <= 2000) {
xml = StringUtils.rightPad(xml, 2008);
}
分享到:
相关推荐
ORA-01461 错误是 Oracle 数据库中的一种常见错误,错误信息为“仅可以为插入 LONG 列的 LONG 值赋值”。该错误通常是由于 Oracle 的 jar 包版本与 Oracle 数据库实际版本不匹配造成的。 在了解 ORA-01461 错误解决...
例如,是否可以将长字符串分解为多个字段,或者使用其他数据结构,如数组或集合类型,来存储和管理这些数据。 在实际应用中,应根据具体情况选择合适的方法。理解Oracle对不同类型字段的长度限制以及如何有效地处理...
Oracle Database 10g Release 2 (10.2.0.5) JDBC Drivers 2011.10.19最新驱动 能够解决诸如:ORA-01461: 仅可以为插入 LONG 列的 LONG 值赋值”这样的错误。
然而,开发过程中可能会遇到错误“ORA-01461 仅可以为插入 LONG 列的 LONG 值赋值”。这个错误意味着在尝试向LONG类型的列插入数据时,操作不正确或者超出了LONG类型能容纳的最大长度。LONG列在Oracle中用于存储大...
- **INVALID_NUMBER** (ORA-1722) - 对非数字值进行数字运算。 - **LOGIN_DENIED** (ORA-1017) - 无效的用户名或密码。 - **NO_DATA_FOUND** (ORA-1403) - 查询未找到数据。 - **NOT_LOGGED_ON** (ORA-1012) - 尚未...
删除HKEY_CLASSES_ROOT目录下所有以Ora、Oracle、Orcl或EnumOra为前缀的键。 删除HKEY_CURRENT_USER/SOFTWARE/Microsoft/windows/CurrentVersion/Explorer/MenuOrder/Start Menu/Programs中所有以oracle 开头...
例:为test表增加一列Age,用来存放年龄 sql>alter table test add (Age number(3)); 修改基表列定义命令如下: ALTER TABLE 表名 MODIFY (列名 数据类型) 例:将test表中的Count列宽度加长为10个字符 sql>...