免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 12857 | 回复: 33
打印 上一主题 下一主题

oracle ORA-01461错误 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-13 15:42 |只看该作者 |倒序浏览
情况是这样:
我在HP-UX下的oracle 9.2.0.1,web服务器是tomcat,在这样的配置下,应用没有问题

目前我把数据库迁移到linux下的oracle 9.2.0.4和oracle 10.2.0.1


迁移到linux下的oracle 9i和oracle 10g上面,我通过数据库直接插入或者pl/sql插入中文
都没有问题,但通过tomcat下的应用插入中文就报错如下:
Caused by: com.ibatis.dao.client.DaoException: Failed to insert - id [insertElement], parameterObject [com.unisk.cms.domain.Element@304648]. Cause: com.ibatis.common.jdbc.exception.NestedSQLException:   
--- The error occurred in com/unisk/cms/persistence/sqlmapdao/sql/Element.xml.  
--- The error occurred while applying a parameter map.  
--- Check the insertElement-InlineParameterMap.  
--- Check the statement (update failed).  
--- Cause: java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column

Caused by: java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column

Caused by: com.ibatis.common.jdbc.exception.NestedSQLException:   
--- The error occurred in com/unisk/cms/persistence/sqlmapdao/sql/Element.xml.  
--- The error occurred while applying a parameter map.  
--- Check the insertElement-InlineParameterMap.  
--- Check the statement (update failed).  


这是怎末回事,大家看看怎末解决

论坛徽章:
0
2 [报告]
发表于 2007-08-14 08:54 |只看该作者
1. 升级应用服务器的jdbc驱动
2. 数据库字符集是什么,是否修改过。

[ 本帖最后由 numenhuang 于 2007-8-14 09:12 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2007-08-14 10:34 |只看该作者
1.  数据库字符集都一样,唯一不同的是操作系统字符集,是不是
有影响,如下:
HP-UX:
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
$ locale
LANG=
LC_CTYPE="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_NUMERIC="C"


oracle:
NLS_CHARACTERSET
ZHS16GBK


Linux:
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

[oracle@gprsdb ~]$ locale
LANG=en_US
LC_CTYPE="en_US"
LC_NUMERIC="en_US"
LC_TIME="en_US"
LC_COLLATE="en_US"
LC_MONETARY="en_US"

oracle:
NLS_CHARACTERSET
ZHS16GBK


2.  升级应用服务器的JDBC驱动,怎末升级,我就做了如下:
jakarta-tomcat-5.0.28/common/lib   目录下的
classes12.zip 和 classes12.jar
这2个类库换成了oracle 10g上的,还是不行,是不是操作不对,
需要怎末做???

论坛徽章:
0
4 [报告]
发表于 2007-08-14 12:55 |只看该作者
新jdbc驱动多少版本,驱动更换以后,tomcat重启没有

论坛徽章:
0
5 [报告]
发表于 2007-08-14 13:31 |只看该作者
jakarta-tomcat-5.0.28/common/lib   目录下的
classes12.zip 和 classes12.jar这2个文件更换了,
不知道算不算升级JDBC,新的这两个文件是从
oracle 10.2.0.1 rac的其中一台主机上抓过来的,
这两个文件更换后tomcat重起了

论坛徽章:
0
6 [报告]
发表于 2007-08-14 13:51 |只看该作者

论坛徽章:
0
7 [报告]
发表于 2007-08-14 13:59 |只看该作者
恩,我先看看这个文档,有啥不明白及时交流

论坛徽章:
0
8 [报告]
发表于 2007-08-14 15:25 |只看该作者
你发的文档我看了,上面oracle 10.2.0.1和oracle 9.2.0.1
上面for jdk1.2  jdk1.3  jdk1.4  jdk1.5的jdbc包我都下载
上了,都是一输入中文就报上面的ora-01461错,咋弄

论坛徽章:
0
9 [报告]
发表于 2007-08-14 15:53 |只看该作者
查看一下数据库alertxxx.log有没有额外的报错信息

出错表的信息(字段大小)

插入的数据内容

确认一下每个库的字符集

论坛徽章:
0
10 [报告]
发表于 2007-08-16 18:30 |只看该作者
alert_XXX.log  我看了没发现啥额外的信息
另外迁移前和迁移后的数据库的字符集都一样
唯一不同的就是操作系统的字符集,
迁移前:$ locale
LANG=
LC_CTYPE="C"
LC_COLLATE="C"
迁移后:
[oracle@gprsdb bdump]$ locale  
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"


插入表和数据都没有没问题,从数据库和pl/sql工具插入都
没有问题,就是通过tomcat一插入中文就出问题了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP