首页 > 解决方案 > Java/hibernate - c3p0 查询 MariaDB 时出错

问题描述

使用 hibernate 框架对 mariaDB 进行查询,系统返回如下信息:

2019 年 4 月 4 日下午 4:43:48 com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource INFORMAZIONI:正在初始化 c3p0 池... com.mchange.v2.c3p0.PoolBackedDataSource@3a29d5cf [connectionPoolDataSource -> 2019 年 4 月 4 日 4: 47:58 PM com.mchange.v2.resourcepool.BasicResourcePool ... ... ... AVVERTENZA: com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@7a0c574a -- 采集尝试失败!!!清除挂起的获取。在尝试获取所需的新资源时,我们未能成功超过允许的最大获取尝试次数 (30)。上次获取尝试异常:java.sql.SQLNonTransientConnectionException:无法创建与数据库服务器的连接。尝试重新连接 3 次。放弃。在 com.mysql.cj 的 com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110)。

没有进一步的日志来了解问题,总体来说,这个问题似乎是突然发生的……可能是某些eclipse更新改变了代码之前的“良好状态”?有什么方法可以进行深度调试吗?

在休眠属性文件下面:

hibernate.connection.provider_class=org.hibernate.connection.C3P0ConnectionProvider
hibernate.connection.driver_class=com.mysql.cj.jdbc.Driver
hibernate.connection.url=jdbc:mysql://*******:****/anagraphic?autoReconnect=true&characterEncoding=UTF-8
hibernate.connection.username=*****
hibernate.connection.password=*****
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
hibernate.show_sql=false
hibernate.use_sql_comments=true
hibernate.format_sql=true
hibernate.generate_statistics=false
hibernate.current_session_context_class=thread
hibernate.jdbc.lob.non_contextual_creation=true

hibernate.connection.autoReconnect=true
hibernate.connection.autoReconnectForPools= true
hibernate.minIdle=5
hibernate.connection.useUnicode=true
hibernate.connection.characterEncoding=UTF-8
hibernate.connection.charSet=UTF-8
hibernate.bytecode.provider = cglib
hibernate.jdbc.use_streams_for_binary =true
hibernate.cglib.use_reflection_optimizer =true
hibernate.jdbc.fetch_size=20
hibernate.jdbc.batch_size=20

hibernate.cache.provider_class=net.sf.ehcache.hibernate.EhCacheProvider
hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory
hibernate.cache.user_query_cache=true
hibernate.cache.user_second_level_cache=true

hibernate.c3p0.max_size=15
hibernate.c3p0.min_size=3
hibernate.c3p0.timeout=180
hibernate.c3p0.max_statements=0
hibernate.c3p0.idle_test_period=300
hibernate.c3p0.acquire_increment=3

标签: javadatabasehibernatetomcatmariadb

解决方案


解决了!!似乎问题是在使用夏令时之后引起的。CEST 时间是问题所在;解决方案是将“serverTimeZone=UTC”添加到 maria db 的连接字符串中...下面的示例:

jdbc:mysql://*******:****/anagraphic?autoReconnect=true&characterEncoding=UTF-8&serverTimezone=UTC


推荐阅读