ORA-01461问题各种解答

| |
[不指定 2007/08/17 11:00 | by zeus ]
Q:我的ORACLE表里没有long字段,可是保存时报错:ORA-01461 :仅可以为插入LONG列的LONG值赋值。
本来我这张表里只有一个VARCHAR2(4000)的字段,一直没有这种错误发生,后来我把另一个字段长度调整为VARCHAR2(4000),这错误就开始发生了。

A:你的数据库字符集可能是UTF-8的,对于UTF-8或欧洲的某些字符集,oracle在存储时,对于一个字符需要2个或3个字节的存储空间,虽然表定义中为varchar2(4000),但是其实该字段的data_length为其2倍或3倍长。这种情况下oracle会把data_length长度超过4000的当做LONG型处理,你的表中有两个这样的字段,插入数据时相当于同时操作2个LONG字段,所以报错。 建议减小字段长度或拆分。

Q: 我用的是asp.net+oracle   8i;有两张表,数据类型一张用的long,另一张用的clob,当插入2千<汉字<4千时,会出现错误信息:ORA-01461:   仅可以为插入   LONG   列的   LONG   值赋值。但汉字超过四千个字又正常;若插入的是英文,超过4K、5K、6K均没问题。两张表的结果一样,请问哪位能帮忙?急!!!

A:我解决啦,呵呵。多加一个长度参数就可以啦。  
 OracleParameter   _OP1   =   new   OracleParameter("Precon",OracleType.Clob,System.Text.Encoding.Default.GetByteCount(this.PreconceiveContent.Text));

Q:Oracle10.1 jdbc驱动bug

A:使用10.1版本的jdbc驱动连接到Oracle9i的数据库时,执行插入或修改的语句包括中文时会报错ORA-01461。半个月内已经两个同事碰到这个问题了,这里简单记录一下,就不重新错误了。Oracle920的错误文档上是这样描述1461错误的:

ORA-01461 can bind a LONG value only for insert into a LONG column

Cause: An attempt was made to insert a value from a LONG datatype into

another datatype. This is not allowed.

Action: Do not try to insert LONG datatypes into other types of columns.

不过,检查修改的数据库表并没有发现LONG类型的字段。而且插入英文不会出现问题,只有在插入中文的时候才会报错。

只有将jdbc的jar包换成9i的或10.2的,同样的程序都不会报错。

在metalink上查了一下,似乎是这个:

Bug 3283151 - ORA-1461 can occur in JDBC Thin 10g binding a shift sensitive string to 9.2 DB




ORA-01461 can bind a LONG value only for insert into a LONG column

Cause: An attempt was made to insert a value from a LONG datatype into

another datatype. This is not allowed.

Action: Do not try to insert LONG datatypes into other types of columns.

不过,检查修改的数据库表并没有发现LONG类型的字段。而且插入英文不会出现问题,只有在插入中文的时候才会报错。

只有将jdbc的jar包换成9i的或10.2的,同样的程序都不会报错。

在metalink上查了一下,似乎是这个:

Bug 3283151 - ORA-1461 can occur in JDBC Thin 10g binding a shift sensitive string to 9.2 DB
数据库相关 | 评论(0) | 引用(0) | 阅读(1668)
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
昵称   密码   游客无需密码
网址   电邮   [注册]
               

验证码 不区分大小写