Совместимость 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 Кэширование операторов.