Совместимость c3p0 с jconnect 4

Я пытаюсь перейти с jconn2 на jconn4. Проблема, с которой я сталкиваюсь, заключается в том, что c3p0 не работает, как ожидалось. Быстрый онлайн-поиск говорит, что он полностью поддерживает jconn4, но я получаю следующее исключение.

com.sybase.jdbc4.jdbc.SybSQLException: SQL Anywhere Error -685: Resource governor for 'prepared statements' exceeded
    at com.sybase.jdbc4.tds.Tds.processEed(Tds.java:4003)
    at com.sybase.jdbc4.tds.Tds.nextResult(Tds.java:3093)
    at com.sybase.jdbc4.jdbc.ResultGetter.nextResult(ResultGetter.java:78)
    at com.sybase.jdbc4.jdbc.SybStatement.nextResult(SybStatement.java:289)
    at com.sybase.jdbc4.jdbc.SybStatement.nextResult(SybStatement.java:271)
    at com.sybase.jdbc4.jdbc.SybStatement.queryLoop(SybStatement.java:2408)
    at com.sybase.jdbc4.jdbc.SybStatement.executeQuery(SybStatement.java:2394)
    at com.sybase.jdbc4.jdbc.SybPreparedStatement.executeQuery(SybPreparedStatement.java:257)

Любые предложения о том, как решить эту проблему??/

1 ответ

Похоже, ваша проблема в том, что слишком много готовых операторов открыто относительно max_statement_count, определенного на вашем сервере.

Самое простое, что можно сделать, это просто отключить кэширование операторов в c3p0, т.е. убедиться, что свойства c3p0 maxStatements а также maxStatementsPerConnection установлены на 0. Если вы хотите повысить производительность кэширования операторов, убедитесь, что maxStatements установлено значение значительно ниже, чем на стороне сервера max_statement_count, Вы также можете отключить "регулятор ресурсов", установив max_statement_count к нулю, хотя Sybase, кажется, препятствует этому.

Смотрите также c3p0 docs re Кэширование операторов.

Другие вопросы по тегам