【问题标题】:c3p0 compatibility with jconnect 4c3p0 与 jconnect 4 的兼容性
【发布时间】:2017-04-21 11:52:59
【问题描述】:

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

关于如何解决这个问题有什么建议吗?/

【问题讨论】:

    标签: prepared-statement sap-ase c3p0 sqlanywhere jconnect


    【解决方案1】:

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

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

    另见c3p0 docs re Statement caching

    【讨论】:

    猜你喜欢
    • 2018-09-04
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 2020-07-23
    相关资源
    最近更新 更多