由于数据库ojdbc14.jar版本不正确导致ORA-01461问题的解决方法
来源:互联网 发布:网络共享用户账户限制 编辑:程序博客网 时间:2024/05/31 19:23
今天在部署主站的过程中,出现了由于ojdbc14.jar版本不正确导致了ORA-01461问题,现将处理过程简单记录一下:
1、应用程序报错信息如下:
2013-04-03 14:34:54,671 ERROR [com.pda.thread.asyn.schedule.DefaultWriteSchedule] - <澶勭悊鏁版嵁com.hzjbbis.db.pda.model.LogUploadRecord@2c5444澶辫触!>org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [INSERT INTO RZ_RWZXJL(RZID,RZLX,JLXH,ZDCZY,ZDXLH,YWKXLH,CZYKXLH,TXDZ,ZXJG,CSBZ,CSSJZ,FJSJ,SJSJ,CZSJ,SCSJ,YWCLBZ)VALUES(S_RZ_RWZXJL.NEXTVAL,?,?,?,?,?,?,?,?,?,?,?,TO_DATE(?,'YYMMDDHH24MISS'),TO_DATE(?,'YYMMDDHH24MISS'),SYSDATE,'0')]; SQL state [72000]; error code [1461]; ORA-01461: can bind a LONG value only for insert into a LONG column; nested exception is java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG columnat org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.translate(SQLStateSQLExceptionTranslator.java:124)at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translate(SQLErrorCodeSQLExceptionTranslator.java:322)at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:606)at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:791)at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:814)at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:214)at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:218)at org.springframework.jdbc.core.simple.SimpleJdbcTemplate.update(SimpleJdbcTemplate.java:229)at com.pda.thread.asyn.service.impl.LogRecordServiceImpl.saveTaskExecuteResult(LogRecordServiceImpl.java:181)at com.pda.thread.asyn.HandleLogUploadThread$1.process(HandleLogUploadThread.java:120)at com.pda.thread.asyn.HandleLogUploadThread$1.process(HandleLogUploadThread.java:1)at com.pda.thread.asyn.schedule.DefaultWriteSchedule.write(DefaultWriteSchedule.java:31)at com.pda.thread.asyn.schedule.DefaultWriteSchedule.run(DefaultWriteSchedule.java:42)at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)at java.util.concurrent.FutureTask.run(FutureTask.java:138)at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)at java.lang.Thread.run(Thread.java:619)Caused by: java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG columnat oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:305)at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:272)at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:623)at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:181)at oracle.jdbc.driver.T4CPreparedStatement.execute_for_rows(T4CPreparedStatement.java:543)at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1028)at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:2888)at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:2960)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:597)at org.logicalcobwebs.proxool.ProxyStatement.invoke(ProxyStatement.java:100)at org.logicalcobwebs.proxool.ProxyStatement.intercept(ProxyStatement.java:57)at oracle.jdbc.internal.OraclePreparedStatement$$EnhancerByProxool$$4edcc6be.executeUpdate(<generated>)at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:797)at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:590)... 16 more
2、这里提到的错误汇总信息如下:
ORA-01461: can bind a LONG value only for insert into a LONG column
; nested exception is java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column
3、网上查找错误原因是:由于应用程序中使用的驱动程序与Oracle服务器端的版本不一致导致的。
数据库服务器上驱动程序位置如下:D:\oracle\product\10.1.0\Db_1\jdbc\lib\ojdbc14.jar
将数据库服务器上替换为应用程序中的驱动文件ojdbc14.jar即可。
4、小结
从此问题分析和处理过程中我们得到的经验和教训是:需要充分重视应用程序开发与数据库技术结合的重要性!
任何细节上的疏忽都有可能对生产环境产生重大的影响
- 由于数据库ojdbc14.jar版本不正确导致ORA-01461问题的解决方法
- 由于ojdbc14.jar版本不正确导致ORA-01461和ORA-01483故障的处理
- 【ojdbc14.jar】由于Oracle驱动ojdbc14.jar导致千万富翁破产之始末
- 由于rt.jar包版本问题导致图片加密异常
- 由于JDK版本问题导致的错误
- 由于连接多个数据库导致的TABLENAME无效,解决方法
- 由于安装oracleasm包的版本导致的问题:
- 由于JRE版本导致的Error filterStart问题
- 由于JRE版本导致的Error filterStart问题
- ojdbc14.jar与classes12.jar有什么区别 ----今天让我查了两个小时,原来是版本问题导致数据库连接不上
- 关于Oracle class12.jar和 ojdbc14.jar 引发的问题
- OJDBC版本【classes12.jar,ojdbc14.jar,ojdbc5.jar和ojdbc6.jar的区别】
- OJDBC版本【classes12.jar,ojdbc14.jar,ojdbc5.jar和ojdbc6.jar的区别】
- OJDBC版本【classes12.jar,ojdbc14.jar,ojdbc5.jar和ojdbc6.jar的区别】
- [VS2008] Debug版本程序发布后 由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题 解决方法
- OJDBC版本区别 [ojdbc14.jar,ojdbc5.jar和ojdbc6.jar的区别]
- OJDBC版本区别 [ojdbc14.jar,ojdbc5.jar和ojdbc6.jar的区别]
- OJDBC版本区别 [ojdbc14.jar,ojdbc5.jar和ojdbc6.jar的区别]
- 四元数
- Awstats实现站点信息统计
- void main()误区
- #2002 - Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 服务器无响应(或者
- 链接
- 由于数据库ojdbc14.jar版本不正确导致ORA-01461问题的解决方法
- 如何解除SVN对文件夹的锁定
- C++编写windows服务学习笔记(转载)
- javaScript学习笔记-Function2
- C/C++初学者练习指针的两个绝好的例子
- mysql数据库开发规范
- 解决Android NDK: Host 'awk' tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !
- SWOT分析与生涯规划
- centos设置静态IP