Получение java. sql .SQLRecoverableException: больше нет данных для чтения из сокета при попытке получить следующее значение последовательности из драйвера jdb c - PullRequest
1 голос
/ 18 июня 2020

Я использую oracle 19.0.0.0.0 и jdbc8 версию 19.3.0 для подключения к базе данных.

Я вставляю данные в таблицу. Перед вставкой получение следующего значения последовательности для столбца серийного номера. Код работает нормально в течение некоторого времени и выдает исключение ниже при получении следующего значения последовательности.

Тот же код работает на другом сервере и подключен к другой базе данных. Работает нормально. Этот идентификатор проблемы только из конкретной базы данных.

java.sql.SQLRecoverableException: No more data to read from socket
        at oracle.jdbc.driver.T4CMAREngineNIO.prepareForUnmarshall(T4CMAREngineNIO.java:784)
        at oracle.jdbc.driver.T4CMAREngineNIO.unmarshalUB1(T4CMAREngineNIO.java:429)
        at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:407)
        at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:268)
        at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:655)
        at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:270)
        at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:91)
        at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:807)
        at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:983)
        at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168)
        at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3666)
        at oracle.jdbc.driver.T4CPreparedStatement.executeInternal(T4CPreparedStatement.java:1426)
        at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3713)
        at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1167)
        at com.agnity.clients.RouteLinkDbManager.getNextSequenceValue(RouteLinkDbManager.java:765)
        at com.agnity.clients.RouteLinkDbManager.addCPR(RouteLinkDbManager.java:256)
        at com.agnity.handlers.RecordHandler.processActionCPR(RecordHandler.java:280)
        at com.agnity.handlers.RecordHandler.processEventArray(RecordHandler.java:147)
        at com.agnity.handlers.RecordHandler.processRecords(RecordHandler.java:63)
        at com.agnity.routelink.SomosDownloadApplication.main(SomosDownloadApplication.java:135)

The query used: String sqlIdentifier = "select " + sequenceName + ".NEXTVAL from dual";

Мы попытались запустить тот же код для подключения к другой базе данных, и он работает нормально.

...