0

我正在尝试从 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)

关于如何解决这个问题的任何建议??/

4

1 回答 1

0

相对于服务器上定义的max_statement_count,您的问题似乎是打开了太多准备好的语句。

最简单的做法是在 c3p0 中关闭语句缓存,即确保 c3p0 属性maxStatementsmaxStatementsPerConnection设置为 0。如果您想要语句缓存的性能优势,请确保将maxStatements其设置为显着低于的值服务器端max_statement_count. 您也可以通过设置为零来关闭“资源管理器” max_statement_count,尽管 Sybase 似乎不鼓励这样做。

另请参阅c3p0 文档重新声明缓存

于 2017-04-21T21:00:49.310 回答