【问题标题】:Exception while connecting to postgress DB in Windows Machine在 Windows 机器中连接到 postgres 数据库时出现异常
【发布时间】:2019-03-23 07:33:13
【问题描述】:

在 Windows 机器中连接到 postgress 数据库时出现以下异常。有人可以帮忙吗

使用 c3p0-0.9.5.2.jar

例外:

2018-09-26 15:53:41,841 错误, com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run ,资源池永久损坏! [com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@87274ea] (因为一系列 20 次收购尝试失败。) 2018-09-26 15:53:41,841 错误, com.mchange.v2.resourcepool.BasicResourcePool.unexpectedBreak , com.mchange.v2.resourcepool.BasicResourcePool@735b478 -- 出乎意料 坏了!!!

com.mchange.v2.resourcepool.ResourcePoolException:意外中断 堆栈跟踪!在 com.mchange.v2.resourcepool.BasicResourcePool.unexpectedBreak(BasicResourcePool.java:974) 在 com.mchange.v2.resourcepool.BasicResourcePool.access$1000(BasicResourcePool.java:44) 在 com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1927) 在 com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696) java.sql.SQLException:一个 SQLException 是由以下引起的 失败:java.lang.InterruptedException 在 com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:118) 在 com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:77) 在 com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:74) 在 com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:694) 在 com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:146) 引起:java.lang.InterruptedException at java.lang.Object.wait(本机方法)在 com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1465) 在 com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:644) 在 com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:554) 在 com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutAndMarkConnectionInUse(C3P0PooledConnectionPool.java:758) 在 com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:685) ... 6 更多

private static ComboPooledDataSource cpds = new ComboPooledDataSource();
try {
cpds = new ComboPooledDataSource();
cpds.setDriverClass(BSMRCommonConstant.POSTGRES_DRIVER);
cpds.setAcquireIncrement(5);
cpds.setBreakAfterAcquireFailure(true);
cpds.setAcquireRetryAttempts(20);
cpds.setMaxPoolSize(20);
cpds.setMaxIdleTime(60 * 10);
cpds.setTestConnectionOnCheckout(true);
cpds.setAcquireRetryDelay(3000);            
cpds.setIdleConnectionTestPeriod(100);          
} catch (PropertyVetoException e) {
e.printStackTrace();
}
Connection con = null;
cpds.setJdbcUrl(url);
cpds.setPassword(password);
cpds.setUser(userName);
con = cpds.getConnection(userName, password); 

【问题讨论】:

  • 嗨,我建议你不要只放错误,还要放错误所在的代码
  • 请参阅stackoverflow.com/help/how-to-ask 页面以获得澄清此问题的帮助。
  • 你能在这里添加你的代码而不是错误
  • 看起来堆栈跟踪中没有你的代码,这可能是一些配置错误,因此与编程无关。
  • 大家好,很抱歉给您带来不便......下面是代码sn-p......最后一行连接到数据库时抛出错误......

标签: java postgresql c3p0


【解决方案1】:

c3po 数据库连接池无法在配置的超时时间内创建数据库连接。

这很可能是配置错误。仔细查看您告诉 c3po 使用的 url。

【讨论】:

  • 非常感谢 Andersen 对此进行了查看。我使用的是 c3p0 版本 0.9.5.2,如果我将从示例独立应用程序连接,那么它工作正常,但它在我的已部署的应用程序。我已将测试连接时间增加到 1000,然后它也无法正常工作。
  • 如果您绝对确定从部署机器上看到的配置是正确的,那么您可能遇到了防火墙问题。可以手动连接配置中描述的数据库端口吗? (过去 telnet machine port 可以做到这一点,但现在 telnet 不一定可用)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-19
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-26
相关资源
最近更新 更多