同一份代码,部署到两个测试环境,一个运行正常一个运行报错,错误信息如下:
PreparedStatementCallback; uncategorized SQLException for SQL []; SQL state [null]; error code [0]; executeBatch, Exception = -32713; nested exception is java.sql.SQLException: executeBatch, Exception = -32713
org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL []; SQL state [null]; error code [0]; executeBatch, Exception = -32713; nested exception is java.sql.SQLException: executeBatch, Exception = -32713
java.sql.SQLException: executeBatch, Exception = -32713 at weblogic.jdbc.wrapper.JDBCWrapperImpl.invocationExceptionHandler(JDBCWrapperImpl.java:141) at weblogic.jdbc.wrapper.PreparedStatement.executeBatch(PreparedStatement.java:201) at org.springframework.jdbc.core.JdbcTemplate$4.doInPreparedStatement(JdbcTemplate.java:792) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:490) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:518) at org.springframework.jdbc.core.JdbcTemplate.batchUpdate(JdbcTemplate.java:783) at com.hollycrm.cpems.thirdparty.syncData.service.DepositDeliverSyncDataService.syncData(DepositDeliverSyncDataService.java:83) at com.hollycrm.cpems.thirdparty.syncData.service.DepositDeliverSyncDataService.execute(DepositDeliverSyncDataService.java:55) at sun.reflect.GeneratedMethodAccessor65.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:291) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:163) at $Proxy120.execute(Unknown Source) at com.hollycrm.cpems.thirdparty.syncData.SyncDataMamager$1.run(SyncDataMamager.java:25) at java.lang.Thread.run(Thread.java:619) Caused by: java.lang.ArrayIndexOutOfBoundsException: -32713 at oracle.jdbc.driver.OraclePreparedStatement.setupBindBuffers(OraclePreparedStatement.java:2677) at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:9270) at oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:210) at weblogic.jdbc.wrapper.PreparedStatement.executeBatch(PreparedStatement.java:191) ... 14 more
经过分析查找原因,参考:https://forums.oracle.com/forums/thread.jspa?messageID=8393003
觉得这个不是代码问题,而是数据库驱动问题,weblogic配置数据源选择的驱动与测试环境所使用的oracle版本不一致导致的。
解决办法:
1.从oracle服务器安装目录jdbc驱动目录下获取对应版本的数据库驱动,拷贝到weblogic部署域下lib目录下
2.重新设置weblogic数据源,选择驱动类型为oracle other类型
3.设置weblogic部署域下bin/setDomainEnv.sh 把匹配版本的ojdbc驱动路径加入CLASSPATH。
4.重新启动服务
相关推荐
1. **Type 1**:纯Java驱动,也称为 Thin 驱动,不依赖于Oracle客户端库。它直接通过网络协议与Oracle数据库服务器通信,轻量级且易于部署。适用于远程访问Oracle数据库的情况。 2. **Type 2**:部分Java部分本地...
- **Thin驱动**:也称为纯Java驱动,是轻量级的,不需要Oracle客户端软件,直接通过网络协议与数据库通信。 - **OCI驱动**:需要Oracle客户端软件,它使用本地接口与数据库进行通信,性能通常优于Thin驱动。 - ...
8. **兼容性问题**:确保JDBC驱动版本与Oracle数据库服务器版本匹配,否则可能会遇到兼容性问题。 9. **安全管理**:理解并正确配置数据库用户的权限,避免使用过于宽泛的权限,防止安全风险。 10. **错误处理**:...
Oracle JDBC驱动是Oracle数据库与Java应用程序之间通信的重要桥梁,它允许Java程序通过JDBC(Java Database Connectivity)接口访问Oracle数据库。在Java编程中,JDBC驱动是实现数据库操作的关键组件,Oracle提供了...
总的来说,Oracle-ojdbc驱动是Java与Oracle数据库之间通信的关键桥梁,其版本号ojdbc14-10.2.0.4.0代表了对Oracle 10g数据库的良好支持,同时也考虑到了在特定设备如华为手机上的兼容性问题。在开发过程中,理解驱动...
这个JAR(Java Archive)文件包含了Oracle的Java驱动程序,通常称为JDBC(Java Database Connectivity)驱动,使得开发者能够在Java应用程序中执行SQL语句,处理事务,以及进行其他与数据库交互的任务。 Oracle ...
这使得部署应用程序变得更加简单,因为不再需要考虑与客户端安装相关的兼容性问题。 要使用Oracle.ManagedDataAccess.dll,你需要在C#项目中添加对这个dll的引用。可以通过以下步骤操作: 1. 打开你的Visual ...
可以创建辅助方法来处理这些问题,如替换字符串中的引号,或将Date对象转换为Oracle兼容的`to_date()`函数表达式。这有助于保持代码清晰并避免错误。 5. **利用PreparedStatement优化性能**:`PreparedStatement`的...
Oracle客户端包含多个关键组件,如OCI(Oracle Call Interface)、OCCI(Oracle C++ Call Interface)、ODBC(Open Database Connectivity)驱动、JDBC(Java Database Connectivity)驱动等。这些组件允许程序员...
在实际应用中,选择合适的JDBC驱动取决于项目需求,如性能、兼容性、部署环境等因素。开发者还需要注意驱动的版本与Oracle数据库版本的匹配,以确保最佳的互操作性。 为了使用这些驱动,开发者需要在Java代码中导入...
它的优点在于易于部署,只包含必要的Java类,不依赖于操作系统或本地Oracle客户端组件。 2. **安装与配置**:使用Oracle JDBC驱动时,需要将对应的jar文件(如ojdbc.jar)添加到项目的类路径中。配置数据库连接时,...
- 如果遇到性能问题,可以考虑使用Oracle的高级特性,如批处理和连接池。 - 配置JDBC驱动时,确保服务器端的数据库版本与驱动兼容。 总之,Oracle JDBC Class12.jar是Java应用程序与Oracle数据库交互的重要组件,它...
- **SQL92兼容**:尽管Oracle支持PL/SQL,但在编写跨平台的应用程序时,最好采用SQL92标准,这样可以提高代码的可移植性和兼容性。 - **示例代码**: ```sql SELECT * FROM table WHERE column1 = 'value'; ``` ...
这个驱动包包含了必要的类和接口,使得Java应用程序能够通过JDBC API连接到Oracle数据库,执行SQL语句,处理结果集等。ojdbc6.jar支持Oracle数据库的多种特性,包括PL/SQL过程调用、批处理、事务控制等。 然而,...
Oracle JDBC驱动程序是连接Java应用程序与Oracle数据库的关键组件。标题中的"ojdbc7驱动(12.1.0.2).zip"指的是Oracle公司为Java 7(JDK7)和Java 8(JDK8)平台认证的特定版本的JDBC驱动,即ojdbc7版本,其具体...
这些连接组件允许PB应用程序执行SQL查询,插入、更新和删除数据,以及进行事务处理。 4. **数据窗口组件**: PB的数据窗口是其最强大的特性之一,能够自动处理与数据库的交互。在PB_ORACLE框架中,数据窗口可能被...
Oracle JDBC驱动程序是Oracle数据库与Java应用程序之间通信的桥梁,使得开发者可以利用Java语言来访问和操作Oracle数据库。ojdbc6-11.2.0.4.0-atlassian-hosted.jar是Oracle公司为Java应用程序提供的一个特定版本的...
Oracle JDBC驱动程序,通常称为ojdbc,是Oracle公司提供的用于Java应用程序与Oracle数据库进行通信的接口。...在实际使用ojdbc7驱动时,如果遇到问题,可能需要参考此类文档以获取解决方案或注意事项。
不过,需要注意的是,这个版本可能不支持最新的Oracle数据库特性,对于新版本的数据库可能会有一些兼容性问题。如果需要最新特性和最佳性能,建议使用更现代的PLSQL Developer版本和对应的Oracle Instant Client。
这些驱动允许.NET应用通过ADO.NET接口无缝地连接到Oracle数据库,执行SQL查询、事务处理等操作。 3. **Instant Client**:压缩包中的"instantclient_11_2"目录包含Oracle Instant Client,这是一个轻量级的客户端...