操作clob 大字段的can bind a LONG value only for insert into a LONG column 异常处理
2009-05-27 17:25
871 查看
开发架构:spring 2.0
DAO层:ibatis 2.3
DB: oracle 10g
需要在spring的application.xml的关于clob的配置。如下源码:
==========================================
<!-- spring提供的对ibatis大字段处理 -->
<bean id="nativeJdbcExtractorNew" class="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor" lazy-init="true"/>
<bean id="oracleLobHandlerNew" class="org.springframework.jdbc.support.lob.OracleLobHandler" lazy-init="true">
<property name="nativeJdbcExtractor"><ref local="nativeJdbcExtractorNew"/></property>
</bean>
<!-- SqlMap setup for iBATIS Database Layer -->
<bean id="sqlMapClientNew" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="dataSource" ref="dataSourceNew" />
<!-- 大字段处理 -->
<property name="lobHandler"><ref local="oracleLobHandlerNew"/></property>
</bean>
============================================
对clob的操作出现can bind a LONG value only for insert into a LONG column ,主要问题是在引入jar包上。
先说下我做的项目中大字段出现的问题时的系统引入的jar包,oracle版本:10g,用的驱动版本:classes12.jar的版本10.2.0.1.0。并且项目中同时还有ojdbc14.jar(10.02版本) 、ojdbc14dms.jar、classes12dms.jar、ojdbc14dms_g.jar这几个都设计数据库操作的jar包,Tomcat的lib下也是classes12.jar(10.2.0.1.0版本)。在项目具体模块中涉及到大字段的操作时候,始终出现can bind a LONG value only for insert into a LONG column 的sql异常。
在网上查了很多资料,都倾向于是使用的oracle版本和classes12.jar的版本不一致的问题所造成,因为项目使用的是oracle10g,换了classes12.jar(10.2.0.1.0版本)包与所使用的oracle版本一致了,但是在操作时问题依然出现sql的异常。
=================================================
解决方式:
1.删除项目中的ojdbc14.jar(10.02版本) 、ojdbc14dms.jar、classes12dms.jar、
ojdbc14dms_g.jar、classes12.jar(10.2.0.1.0版本)这样的jar。
2.同时删除tomcat/lib下的classes12.jar包。
3.用ojdbc14.jar(注意:Oracle JDBC Driver version - 10.1.0.2.0)添加到项目和tomcat中。
重启app,操作相应的用到大字段的模块,问题解决。
================================================================
问题的原因:
驱动包classes12.jar用于JDK 1.2和JDK 1.3,而ojdbc14.jar用于JDK 1.4及以上,所以尽量不要使用classes12.jar;
从oracle 9.2之后,对jdbc 的驱动程序的命名将有所改变,JDK1.1,JDK1.2的驱动程序名(class12.jar)将不再改变,一直沿用下去,从JDK1.4开始驱动程序名将所有改变,例如:JDK1.4的驱动名为ojdbc14.jar 。JDK1.5的驱动名为ojdbc15.jar
DAO层:ibatis 2.3
DB: oracle 10g
需要在spring的application.xml的关于clob的配置。如下源码:
==========================================
<!-- spring提供的对ibatis大字段处理 -->
<bean id="nativeJdbcExtractorNew" class="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor" lazy-init="true"/>
<bean id="oracleLobHandlerNew" class="org.springframework.jdbc.support.lob.OracleLobHandler" lazy-init="true">
<property name="nativeJdbcExtractor"><ref local="nativeJdbcExtractorNew"/></property>
</bean>
<!-- SqlMap setup for iBATIS Database Layer -->
<bean id="sqlMapClientNew" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="dataSource" ref="dataSourceNew" />
<!-- 大字段处理 -->
<property name="lobHandler"><ref local="oracleLobHandlerNew"/></property>
</bean>
============================================
对clob的操作出现can bind a LONG value only for insert into a LONG column ,主要问题是在引入jar包上。
先说下我做的项目中大字段出现的问题时的系统引入的jar包,oracle版本:10g,用的驱动版本:classes12.jar的版本10.2.0.1.0。并且项目中同时还有ojdbc14.jar(10.02版本) 、ojdbc14dms.jar、classes12dms.jar、ojdbc14dms_g.jar这几个都设计数据库操作的jar包,Tomcat的lib下也是classes12.jar(10.2.0.1.0版本)。在项目具体模块中涉及到大字段的操作时候,始终出现can bind a LONG value only for insert into a LONG column 的sql异常。
在网上查了很多资料,都倾向于是使用的oracle版本和classes12.jar的版本不一致的问题所造成,因为项目使用的是oracle10g,换了classes12.jar(10.2.0.1.0版本)包与所使用的oracle版本一致了,但是在操作时问题依然出现sql的异常。
=================================================
解决方式:
1.删除项目中的ojdbc14.jar(10.02版本) 、ojdbc14dms.jar、classes12dms.jar、
ojdbc14dms_g.jar、classes12.jar(10.2.0.1.0版本)这样的jar。
2.同时删除tomcat/lib下的classes12.jar包。
3.用ojdbc14.jar(注意:Oracle JDBC Driver version - 10.1.0.2.0)添加到项目和tomcat中。
重启app,操作相应的用到大字段的模块,问题解决。
================================================================
问题的原因:
驱动包classes12.jar用于JDK 1.2和JDK 1.3,而ojdbc14.jar用于JDK 1.4及以上,所以尽量不要使用classes12.jar;
从oracle 9.2之后,对jdbc 的驱动程序的命名将有所改变,JDK1.1,JDK1.2的驱动程序名(class12.jar)将不再改变,一直沿用下去,从JDK1.4开始驱动程序名将所有改变,例如:JDK1.4的驱动名为ojdbc14.jar 。JDK1.5的驱动名为ojdbc15.jar
相关文章推荐
- proc中插入VARCHAR2字段报ORA-01461: can bind a LONG value only for insert into a LONG column
- 关于ORA-01461: can bind a LONG value only for insert into a LONG column错误处理
- ORA-01461: can bind a LONG value only for insert into a LONG column oracle
- ORA-01461: can bind a LONG value only for insert into a LONG column,不是中文长度问题,是ojdbc驱动
- 关于ORA-01461: can bind a LONG value only for insert into a LONG column
- ORA-01461: can bind a LONG value only for insert into a LONG column解决办法
- 解决 ORA-01461: can bind a LONG value only for insert into a LONG column
- can bind a LONG value only for insert into a LONG column
- ORA-01461: can bind a LONG value only for insert into a LONG column 问题解决方案
- ORA-01461: can bind a LONG value only for insert into a LONG column
- ORA-01461: can bind a LONG value only for insert into a LONG column
- hibernate错误:ORA-01461: can bind a LONG value only for insert into a LONG column
- ORA-01461: can bind a LONG value only for insert into a LONG column
- can bind a LONG value only for insert into a LONG column
- 关于出现数据库错误ORA-01461: can bind a LONG value only for insert into a LONG column
- ORA-01461: can bind a LONG value only for insert into a LONG column
- oracle ORA-01461 错误 can bind a LONG value only for insert into a LONG column
- 转: can bind a LONG value only for insert into a LONG column
- Siebel Exception: ORA-01461: can bind a LONG value only for insert into a LONG column
- oracle数据库 ORA-01461: can bind a LONG value only for insert into a LONG column解决方案