Initializing connection provider: org.springframework.orm.hibernate3.LocalDataSourceConnectionProvid

1 篇文章 0 订阅
1 篇文章 0 订阅

最近有一个老项目做二开,项目使用了SSH架构,c3p0作为数据库连接池,但是项目启动的时候,tomcat会卡在下面这行代码:


Initializing connection provider: org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider

很久之后,tomcat会抛出异常:


Caused by: java.sql.SQLException: Connections could not be acquired from the underlying database!
 at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106) at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:529) at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128) at org.quartz.utils.PoolingConnectionProvider.getConnection(PoolingConnectionProvider.java:247) at org.quartz.utils.DBConnectionManager.getConnection(DBConnectionManager.java:108) at org.quartz.impl.jdbcjobstore.JobStoreSupport.getConnection(JobStoreSupport.java:774) ... 23 more

在网上搜索了很久,网上的解决办法总结如下:

  1. 驱动配置有误;
  2. 数据库连接地址有误;
  3. 密码或帐号有误;
  4. 数据库未启动或无权访问;
  5. 重新启动mysql;
  6. clean tomcat,并重新发布项目;
  7. tomcat lib文件夹下未引入对应的数据库驱动jar包;
  8. 项目未引入对应的数据库驱动jar包;

其中第五点引起了我的注意,因为项目一开始用的是5.5.X版本的mysql,而我本地的环境是8.0.X,于是抱着激动的心情赶紧下载了一个对应的jar驱动包,然而结果让我失望了,还是报一样的错,而其它几点我确定配置是没有错的。

最后,在网上偶然看到有人说使用相同的配置用jdbc方式连接数据库,试试能不能连通,结果还真是连不上,报错如下:


java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
    com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:127)
    com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95)
    com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:87)
    com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:61)
    com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:71)
    com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:76)
    com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:862)
    com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:444)
    com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:230)
    com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:226)
    com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175)
    com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)
    com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)
    com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203)
    com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138)
    com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125)
    com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)
    com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870)
    com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)

mysql时区错误.....解决办法如下:


show variables like '%time_zone%';
set global time_zone='+8:00';

在命令行进入mysql后,执行以上sql语句,然后再启动项目,项目果然能正常运行了!!

另外,执行以上并不能实际解决问题,因为每次重启mysql的话,都需要重新设置时区,下面是一劳永逸的办法:

在url中拼接:&serverTimezone=Asia/Shanghai。

大功告成!!!

记录本次解决错误的过程,希望能帮助到有需要的人....解决这个错误的过程真是太痛苦了....

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值