我正在尝试从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)有什么关于如何解决这个问题的建议吗??/
发布于 2017-04-22 05:00:49
看起来您的问题是相对于服务器上定义的max_statement_count打开了太多的准备好的语句。
最简单的做法就是在c3p0中关闭语句缓存,即确保c3p0属性maxStatements和maxStatementsPerConnection设置为0。如果您希望获得语句缓存的性能优势,请确保将maxStatements设置为比服务器端max_statement_count低得多的值。您还可以通过将max_statement_count设置为0来关闭“资源调控器”,尽管Sybase似乎不鼓励这样做。
另请参见c3p0 docs re Statement caching。
https://stackoverflow.com/questions/43542055
复制相似问题