#java #oracle #jdbc
#java #Oracle #jdbc
Вопрос:
при выполнении следующего запроса с использованием jdbc:
SELECT partition_name, high_value
FROM user_tab_partitions
WHERE table_name = 'SOME_TABLE_WITH_PARTITIONS';
Попытка выполнить следующее (на Java):
rs.getString("high_value");
Выдал следующую ошибку:
java.sql.SQLException: Stream has already been closed
at oracle.jdbc.driver.LongAccessor.getBytesInternal(LongAccessor.java:127)
at oracle.jdbc.driver.Accessor.getBytes(Accessor.java:926)
at oracle.jdbc.driver.LongAccessor.getString(LongAccessor.java:154)
at oracle.jdbc.driver.GeneratedStatement.getString(GeneratedStatement.java:287)
at oracle.jdbc.driver.GeneratedScrollableResultSet.getString(GeneratedScrollableResultSet.java:374)
at oracle.jdbc.driver.GeneratedResultSet.getString(GeneratedResultSet.java:594)
at com.zaxxer.hikari.pool.HikariProxyResultSet.getString(HikariProxyResultSet.java)
at sun.reflect.GeneratedMethodAccessor70.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.jdbcdslog.ResultSetLoggingHandler.invoke(ResultSetLoggingHandler.java:19)
at com.sun.proxy.$Proxy22.getString(Unknown Source)
at mypackage.MyClass.extractHighValue(MyClass.java:46)
* Обратите внимание, что этот вопрос не связан с запросом устаревших LONG
типов.
Комментарии:
1. Какую версию Oracle вы используете и какова версия драйвера Oracle JDBC?
Ответ №1:
По-видимому, мы использовали оболочку для соединения для регистрации запросов с именем (jdbcdslog):
ConnectionLoggingProxy.wrap(conn)
Как только я удалил оболочку, все заработало, хотя я до сих пор не знаю, почему jdbcdslog
возникла эта проблема. Плохое отражение? Возможно, интеграция с hikaryCP
?