OraclePreparedStatement.setupBindBuffers-32593

OraclePreparedStatement.setupBindBuffers -32593

我在尝试使用 CallableStatement 将记录插入数据库时​​遇到异常。 总记录:1300 由于某些安全原因无法提供代码片段,对此深表歉意,但它的正常 CallableStatement 可以完美地执行我项目中的其他流程。

在 1327 抛出异常。stmt.executeBatch()。 stmt 是 CallableStatement 的对象。

你有一个错误。它在您的代码中。

转到文件 com.mypackage.accounts.server.util.UtilClass。

转到第 1356 行。

在上面,您会发现至少有 1 个数组访问(即 foo[x])。 []里面的数字?由于某种原因,它是 -32593。如果该行中有超过 1 个 [],它就是其中之一,无法从这个堆栈跟踪中分辨出是哪一个。

如果您不粘贴代码,我们无法告诉您原因。我可以告诉你,PreparedStatement 与这些都没有任何关系。

您的问题可能与 Oracle JDBC 驱动程序 #6396242 错误有关:ArrayIndexOutOfBoundsException:-32nnn.

请尝试从 Oracle 支持下载该错误的补丁。

如果您无法访问 Oracle 支持,您还可以从以下 link 下载适用于您的数据库版本的最新版本的 Oracle JDBC 驱动程序,它也会解决问题.

这是 mysql 驱动程序中的一个已知问题,它已在 5.1.13 中修复,更多详细信息 [此处] 1,因此要修复您的错误,只需将其升级到最新版本即可。

Oracle JDBC 驱动程序可能抛出 ArrayIndexOutofBoundsException。

Here 您将从 oracle 中获得错误的确切详细信息。

批量过大会出现这种情况。因此,要么在 OracleOutput 组件中将批处理设置得更小,要么尝试使用不同的模式来插入数据。

为了解决此问题,必须从 Oracle 的支持站点下载 BUG 6396242 的补丁并在使用前应用它。

您可以通过从 OJDBC.

下载 11 或更高版本的新版 ojdbc 来解决此问题

如果您在此处看到此自述文件 BUG-6396242,它已在 Oracle JDBC Drivers release 11.1.0.7.0 - Production 版本中修复。

这里我附上了相同的截图。