gpt4 book ai didi

在 ojdbc8 中运行 INSERT 查询时出现 java.lang.NegativeArraySizeException

转载 作者:太空宇宙 更新时间:2023-11-04 11:23:05 27 4
gpt4 key购买 nike

尝试按如下方式运行 INSERT 查询时:

javax.persistence.Query query = entityManager.createNativeQuery(MY_NATIVE_QUERY);
return query.executeUpdate();

从我的 Java 应用程序中,我收到以下错误:

java.lang.NegativeArraySizeException: null
at oracle.net.ano.CryptoNIONSDataChannel.readDataFromSocketChannel(Unknown Source) ~[ojdbc8-12.2.0.1.jar:12.2.0.1.0]
at oracle.jdbc.driver.T4CMAREngineNIO.prepareForReading(T4CMAREngineNIO.java:98) ~[ojdbc8-12.2.0.1.jar:12.2.0.1.0]
at oracle.jdbc.driver.T4CMAREngineNIO.unmarshalUB1(T4CMAREngineNIO.java:534) ~[ojdbc8-12.2.0.1.jar:12.2.0.1.0]
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:485) ~[ojdbc8-12.2.0.1.jar:12.2.0.1.0]
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:252) ~[ojdbc8-12.2.0.1.jar:12.2.0.1.0]
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:612) ~[ojdbc8-12.2.0.1.jar:12.2.0.1.0]
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:226) ~[ojdbc8-12.2.0.1.jar:12.2.0.1.0]
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:59) ~[ojdbc8-12.2.0.1.jar:12.2.0.1.0]
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:910) ~[ojdbc8-12.2.0.1.jar:12.2.0.1.0]
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1119) ~[ojdbc8-12.2.0.1.jar:12.2.0.1.0]
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3780) ~[ojdbc8-12.2.0.1.jar:12.2.0.1.0]
at oracle.jdbc.driver.T4CPreparedStatement.executeInternal(T4CPreparedStatement.java:1343) ~[ojdbc8-12.2.0.1.jar:12.2.0.1.0]
at oracle.jdbc.driver.OraclePreparedStatement.executeLargeUpdate(OraclePreparedStatement.java:3865) ~[ojdbc8-12.2.0.1.jar:12.2.0.1.0]
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3845) ~[ojdbc8-12.2.0.1.jar:12.2.0.1.0]
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1061) ~[ojdbc8-12.2.0.1.jar:12.2.0.1.0]
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105) ~[commons-dbcp-1.4.jar:1.4]
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105) ~[commons-dbcp-1.4.jar:1.4]
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:208) ~[hibernate-core-4.3.10.Final.jar:4.3.10.Final]
at org.hibernate.engine.query.spi.NativeSQLQueryPlan.performExecuteUpdate(NativeSQLQueryPlan.java:211) ~[hibernate-core-4.3.10.Final.jar:4.3.10.Final]
at org.hibernate.internal.SessionImpl.executeNativeUpdate(SessionImpl.java:1346) ~[hibernate-core-4.3.10.Final.jar:4.3.10.Final]
at org.hibernate.internal.SQLQueryImpl.executeUpdate(SQLQueryImpl.java:389) ~[hibernate-core-4.3.10.Final.jar:4.3.10.Final]
at org.hibernate.jpa.internal.QueryImpl.internalExecuteUpdate(QueryImpl.java:371) ~[hibernate-entitymanager-4.3.10.Final.jar:4.3.10.Final]
at org.hibernate.jpa.spi.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:78) ~[hibernate-entitymanager-4.3.10.Final.jar:4.3.10.Final]

使用的数据库是Oracle 10g,使用的jdbc驱动程序是ojdbc8-12.2.0.1。插入查询是一种简单的插入,它从两个表的联接中选择数据并插入到另一个表中。

此外,我在开发中没有遇到此异常,它只发生在生产中。我遇到了一个解决方案here它表示这是一个内部 Oracle 驱动程序错误,并建议升级到最新的 10g 驱动程序。但我已经有12c驱动程序了。如何解决这个问题?

最佳答案

看起来 12.2.0.1 有一个错误,有时会导致此问题。它似乎还取决于环境和查询。我遇到一个正在获取 BLOB 的查询,该问题在许多环境中可靠地发生,并且许多其他查询在极少数设置中确实会失败,但如果它们确实失败,则可以在这些特定设置(网络、数据库)中可靠地重现这一问题。截至今天,12.2.0.1 似乎仍然是可用的最新版本。

看起来 12.1.0.2 无法重现此问题。但是 12.1.0.2 似乎与 Oracle Wallet 存在问题。因此,如果您遇到 NegativeArraySizeException 问题并且您不使用 Oracle Wallet,那么使用 12.1.0.2 而不是 12.2.0.1 应该适合您。

使用 Oracle 12c DB 进行测试。

关于在 ojdbc8 中运行 INSERT 查询时出现 java.lang.NegativeArraySizeException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44695130/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com