簡體   English   中英

連接池錯誤(Spring、hibernate)。 如何解決這個問題?

[英]Connection pool error (Spring,hibernate) . How to fix this?

WARNING: com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@3531a5ff -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception: 

java.sql.SQLException:無法加載身份驗證插件“caching_sha2_password”。 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:869) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:865) at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1746 ) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1226) at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2188) at com.Z81C3B080DAD537 DE7E10E0987A4BF52EZ.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2219) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2014) at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:776) at com. mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:47) at sun.reflect.GeneratedConstructorAccessor36.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance (構造函數.Z93F725A074 23FE1C889F448B33D21F46Z:423) at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:386) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver .java:330) at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175) at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220) at com.mchange.v2. c3p0.WrapperConnectionPo olDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206) at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203) at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java: 1138) at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125) at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44) at com.mchange.v2.resourcepool. BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870) 在 com .mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)

Apr 19, 2020 11:14:30 PM com.mchange.v2.resourcepool.BasicResourcePool WARNING: com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@456d6127 -- Acquisition Attempt Failed.,. 清除掛起的獲取:在嘗試獲取所需的新資源時。 我們未能成功超過允許的最大獲取嘗試次數 (30)。 上次獲取嘗試異常:java.sql.SQLException。 無法加載身份驗證插件“caching_sha2_password”。 at com.mysql.jdbc:SQLError.createSQLException(SQLError.java.869) at com.mysql.jdbc:SQLError.createSQLException(SQLError.java.865) at com.mysql.jdbc:MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java.1746 ) at com.mysql.jdbc:MysqlIO.doHandshake(MysqlIO.java.1226) at com.mysql.jdbc:ConnectionImpl.coreConnect(ConnectionImpl.java.2188) at com.Z81C3B080DAD537 DE7E10E0987A4BF52EZ.jdbc:ConnectionImpl.connectOneTryOnly(ConnectionImpl.java.2219) at com.mysql.jdbc:ConnectionImpl.createNewIO(ConnectionImpl.java.2014) at com.mysql.jdbc:ConnectionImpl.(ConnectionImpl.java.776) at com. mysql.jdbc:JDBC4Connection.(JDBC4Connection.java.47) at sun.reflect.GeneratedConstructorAccessor36.newInstance(Unknown Source) at sun.reflect:DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java.45) at java.lang.reflect:Constructor.newInstance (構造函數.Z93F725A074 23FE1C889F448B33D21F46Z.423) at com.mysql.jdbc:Util.handleNewInstance(Util.java.425) at com.mysql.jdbc:ConnectionImpl.getInstance(ConnectionImpl.java.386) at com.mysql.jdbc:NonRegisteringDriver.connect(NonRegisteringDriver .java.330) at com.mchange.v2.c3p0:DriverManagerDataSource.getConnection(DriverManagerDataSource.java.175) at com.mchange.v2.c3p0:WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java.220) at com.mchange.v2. c3p0:WrapperConnectionPo olDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java.206) at com.mchange.v2.c3p0.impl:C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java.203) at com.mchange.v2.resourcepool:BasicResourcePool.doAcquire(BasicResourcePool.java. 1138) at com.mchange.v2.resourcepool:BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java.1125) at com.mchange.v2.resourcepool:BasicResourcePool.access$700(BasicResourcePool.java.44) at com.mchange.v2.resourcepool: BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java.1870) 在 com .mchange.v2.async:ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)

Apr 19, 2020 11:14:30 PM com.mchange.v2.resourcepool.BasicResourcePool WARNING: com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@661ca68e -- Acquisition Attempt Failed.,. 清除掛起的獲取:在嘗試獲取所需的新資源時。 我們未能成功超過允許的最大獲取嘗試次數 (30)。 上次獲取嘗試異常:java.sql.SQLException。 無法加載身份驗證插件“caching_sha2_password”。 at com.mysql.jdbc:SQLError.createSQLException(SQLError.java.869) at com.mysql.jdbc:SQLError.createSQLException(SQLError.java.865) at com.mysql.jdbc:MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java.1746 ) at com.mysql.jdbc:MysqlIO.doHandshake(MysqlIO.java.1226) at com.mysql.jdbc:ConnectionImpl.coreConnect(ConnectionImpl.java.2188) at com.Z81C3B080DAD537 DE7E10E0987A4BF52EZ.jdbc:ConnectionImpl.connectOneTryOnly(ConnectionImpl.java.2219) at com.mysql.jdbc:ConnectionImpl.createNewIO(ConnectionImpl.java.2014) at com.mysql.jdbc:ConnectionImpl.(ConnectionImpl.java.776) at com. mysql.jdbc:JDBC4Connection.(JDBC4Connection.java.47) at sun.reflect.GeneratedConstructorAccessor36.newInstance(Unknown Source) at sun.reflect:DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java.45) at java.lang.reflect:Constructor.newInstance (構造函數.Z93F725A074 23FE1C889F448B33D21F46Z.423) at com.mysql.jdbc:Util.handleNewInstance(Util.java.425) at com.mysql.jdbc:ConnectionImpl.getInstance(ConnectionImpl.java.386) at com.mysql.jdbc:NonRegisteringDriver.connect(NonRegisteringDriver .java.330) at com.mchange.v2.c3p0:DriverManagerDataSource.getConnection(DriverManagerDataSource.java.175) at com.mchange.v2.c3p0:WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java.220) at com.mchange.v2. c3p0:WrapperConnectionPo olDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java.206) at com.mchange.v2.c3p0.impl:C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java.203) at com.mchange.v2.resourcepool:BasicResourcePool.doAcquire(BasicResourcePool.java. 1138) at com.mchange.v2.resourcepool:BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java.1125) at com.mchange.v2.resourcepool:BasicResourcePool.access$700(BasicResourcePool.java.44) at com.mchange.v2.resourcepool: BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java.1870) 在 com .mchange.v2.async:ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)

Apr 19, 2020 11:14:30 PM com.mchange.v2.resourcepool.BasicResourcePool WARNING: Having failed to acquire a resource, com.mchange.v2.resourcepool.BasicResourcePool@7439cf4b is interrupting all Threads waiting on a resource to check out . 將再次嘗試響應新的客戶端請求。 Apr 19, 2020 11:14:30 PM com.mchange.v2.resourcepool.BasicResourcePool WARNING: Having failed to acquire a resource, com.mchange.v2.resourcepool.BasicResourcePool@7439cf4b is interrupting all Threads waiting on a resource to check out . 將再次嘗試響應新的客戶端請求。 Apr 19, 2020 11:14:30 PM com.mchange.v2.resourcepool.BasicResourcePool WARNING: Having failed to acquire a resource, com.mchange.v2.resourcepool.BasicResourcePool@7439cf4b is interrupting all Threads waiting on a resource to check out . 將再次嘗試響應新的客戶端請求。 2020 年 4 月 19 日晚上 11:14:30 org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator 啟動服務警告:HHH000342:無法從底層數據庫獲取連接0 元數據:1 月 9 日:20 無法從基礎數據庫獲取連接0 22 查詢元數據:1晚上 11:14.30 com.mchange.v2.resourcepool:BasicResourcePool 警告。 com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@3aea5402 -- 獲取嘗試失敗,.: 清除掛起的獲取。 在嘗試獲取所需的新資源時。 我們未能成功超過允許的最大獲取嘗試次數 (30):上次獲取嘗試異常。 java.sql.SQLException。 無法加載身份驗證插件“caching_sha2_password”。 at com.mysql:jdbc.SQLError.createSQLException(SQLError.java.869) at com.mysql:jdbc.SQLError.createSQLException(SQLError.java.865) at com.mysql:jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java.1746 ) at com.mysql:jdbc.MysqlIO.doHandshake(MysqlIO.java.1226) at com.mysql:jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java.2188) at com.Z81C3B080DAD537 DE7E10E0987A4BF52EZ:jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java.2219) at com.mysql:jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java.2014) at com.mysql:jdbc.ConnectionImpl.(ConnectionImpl.java.776) at com. mysql:jdbc.JDBC4Connection.(JDBC4Connection.java.47) at sun.reflect.GeneratedConstructorAccessor36.newInstance(Unknown Source) at sun:reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java.45) at java.lang:reflect.Constructor.newInstance (構造函數.Z93F725A074 23FE1C889F448B33D21F46Z.423) at com.mysql:jdbc.Util.handleNewInstance(Util.java.425) at com.mysql:jdbc.ConnectionImpl.getInstance(ConnectionImpl.java.386) at com.mysql:jdbc.NonRegisteringDriver.connect(NonRegisteringDriver .java.330) at com.mchange.v2:c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java.175) at com.mchange.v2:c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java.220) at com.mchange.v2: c3p0.WrapperConnectionPo olDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java.206) at com.mchange.v2.c3p0:impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java.203) at com.mchange.v2:resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java. 1138) at com.mchange.v2:resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java.1125) at com.mchange.v2:resourcepool.BasicResourcePool.access$700(BasicResourcePool.java.44) at com.mchange.v2:resourcepool. BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java.1870) 在 com .mchange.v2:async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)

Apr 19, 2020 11:14:30 PM com.mchange.v2.resourcepool.BasicResourcePool WARNING: Having failed to acquire a resource, com.mchange.v2.resourcepool.BasicResourcePool@7439cf4b is interrupting all Threads waiting on a resource to check out . 將再次嘗試響應新的客戶端請求。 Apr 19, 2020 11:14:30 PM com.mchange.v2.resourcepool.BasicResourcePool WARNING: com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@4f3eb158 -- Acquisition Attempt Failed.,. 清除掛起的獲取:在嘗試獲取所需的新資源時。 我們未能成功超過允許的最大獲取嘗試次數 (30)。 上次獲取嘗試異常:java.sql.SQLException。 無法加載身份驗證插件“caching_sha2_password”。 at com.mysql.jdbc:SQLError.createSQLException(SQLError.java.869) at com.mysql.jdbc:SQLError.createSQLException(SQLError.java.865) at com.mysql.jdbc:MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java.1746 ) at com.mysql.jdbc:MysqlIO.doHandshake(MysqlIO.java.1226) at com.mysql.jdbc:ConnectionImpl.coreConnect(ConnectionImpl.java.2188) at com.Z81C3B080DAD537 DE7E10E0987A4BF52EZ.jdbc:ConnectionImpl.connectOneTryOnly(ConnectionImpl.java.2219) at com.mysql.jdbc:ConnectionImpl.createNewIO(ConnectionImpl.java.2014) at com.mysql.jdbc:ConnectionImpl.(ConnectionImpl.java.776) at com. mysql.jdbc:JDBC4Connection.(JDBC4Connection.java.47) at sun.reflect.GeneratedConstructorAccessor36.newInstance(Unknown Source) at sun.reflect:DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java.45) at java.lang.reflect:Constructor.newInstance (構造函數.Z93F725A074 23FE1C889F448B33D21F46Z.423) at com.mysql.jdbc:Util.handleNewInstance(Util.java.425) at com.mysql.jdbc:ConnectionImpl.getInstance(ConnectionImpl.java.386) at com.mysql.jdbc:NonRegisteringDriver.connect(NonRegisteringDriver .java.330) at com.mchange.v2.c3p0:DriverManagerDataSource.getConnection(DriverManagerDataSource.java.175) at com.mchange.v2.c3p0:WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java.220) at com.mchange.v2. c3p0:WrapperConnectionPo olDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java.206) at com.mchange.v2.c3p0.impl:C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java.203) at com.mchange.v2.resourcepool:BasicResourcePool.doAcquire(BasicResourcePool.java. 1138) at com.mchange.v2.resourcepool:BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java.1125) at com.mchange.v2.resourcepool:BasicResourcePool.access$700(BasicResourcePool.java.44) at com.mchange.v2.resourcepool: BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java.1870) 在 com .mchange.v2.async:ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)

Apr 19, 2020 11:14:30 PM com.mchange.v2.resourcepool.BasicResourcePool WARNING: Having failed to acquire a resource, com.mchange.v2.resourcepool.BasicResourcePool@7439cf4b is interrupting all Threads waiting on a resource to check out . 將再次嘗試響應新的客戶端請求。 2020 年 4 月 19 日晚上 11:14:30 org.hibernate.dialect.Dialect 信息:HHH000400:使用方言:org.hibernate.dialect.MySQLDialect

這是我的代碼

@Autowired
private Environment env;

private Logger logger = Logger.getLogger(getClass().getName());

// define a bean for ViewResolver

@Bean
public DataSource myDataSource() {

    // create connection pool
    ComboPooledDataSource myDataSource = new ComboPooledDataSource();

    // set the jdbc driver
    try {
        myDataSource.setDriverClass("com.mysql.jdbc.Driver");       
    }
    catch (PropertyVetoException exc) {
        throw new RuntimeException(exc);
    }

    // for sanity's sake, let's log url and user ... just to make sure we are reading the data
    logger.info("jdbc.url=" + env.getProperty("jdbc.url"));
    logger.info("jdbc.user=" + env.getProperty("jdbc.user"));

    // set database connection props
    myDataSource.setJdbcUrl(env.getProperty("jdbc.url"));
    myDataSource.setUser(env.getProperty("jdbc.user"));
    myDataSource.setPassword(env.getProperty("jdbc.password"));

    // set connection pool props
    myDataSource.setInitialPoolSize(getIntProperty("connection.pool.initialPoolSize"));
    myDataSource.setMinPoolSize(getIntProperty("connection.pool.minPoolSize"));
    myDataSource.setMaxPoolSize(getIntProperty("connection.pool.maxPoolSize"));     
    myDataSource.setMaxIdleTime(getIntProperty("connection.pool.maxIdleTime"));

    return myDataSource;
}

private Properties getHibernateProperties() {

    // set hibernate properties
    Properties props = new Properties();

    props.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect"));
    props.setProperty("hibernate.show_sql", env.getProperty("hibernate.show_sql"));

    return props;               
}


// need a helper method 
// read environment property and convert to int

private int getIntProperty(String propName) {

    String propVal = env.getProperty(propName);

    // now convert to int
    int intPropVal = Integer.parseInt(propVal);

    return intPropVal;
}   

@Bean
public LocalSessionFactoryBean sessionFactory(){

    // create session factories
    LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();

    // set the properties
    sessionFactory.setDataSource(myDataSource());
    sessionFactory.setPackagesToScan(env.getProperty("hibernate.packagesToScan"));
    sessionFactory.setHibernateProperties(getHibernateProperties());

    return sessionFactory;
}

@Bean
@Autowired
public HibernateTransactionManager transactionManager(SessionFactory sessionFactory) {

    // setup transaction manager based on session factory
    HibernateTransactionManager txManager = new HibernateTransactionManager();
    txManager.setSessionFactory(sessionFactory);

    return txManager;
}   

}

我怎樣才能解決這個問題?

您的問題是您的池中沒有與數據庫的免費連接。 我不知道它在 hibernate 中是如何工作的。 但是你應該注意你的數據庫訪問。 使用后應關閉連接。 在 JDBC 中,只需使用“嘗試資源”( try() {...} )打開它或使用“finally”塊關閉連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM