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
本来我这张表里只有一个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
在APACHE环境下配置下载服务器
免费操作系统的vmware 镜像文件下载

2007/08/17 11:00 | by 