我意识到还有其他与我的问题类似的问题,但是我觉得我的问题有所不同,所以我还是要问一下。我一直在使用hibernate开发Java Web应用程序,并且在本地Tomcat服务器上运行它时也没有出现问题。但是,在尝试将其部署到Heroku上并使用ClearDB的免费版本后,由于网站会随机引发异常,因此我一直遇到问题。具体来说,我正在

org.hibernate.exception.JDBCConnectionException: Communications link failure


我在Google上找到的东西,但相信不是我的问题:


数据库空闲时间过长(> 8小时)。我一直在使用该网站,因此它肯定没有闲置超过8个小时。
与数据库的连接过多。我是当前连接到数据库的唯一一个,网站说最多有10个连接,所以我在其限制范围内


我的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.password">PASSWORD</property>
    <property name="hibernate.connection.url">jdbc:mysql://DBURL?reconnect=true</property>
    <property name="hibernate.connection.username">USERNAME</property>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name= "hbm2ddl.auto">update</property>
    <property name="show_sql">true</property>
</session-factory>




提前致谢

最佳答案

我愿意打赌,如果您使用JawsDB add-on而不是ClearDB,这将消失:

$ heroku addons:destroy cleardb
$ heroku addons:create jawsdb:kitefin


我对ClearDB有很多问题。

如果必须使用ClearDB,建议将connectionTestQuery添加到数据库连接池配置中。我不确定如何通用地执行此操作,但是如果您使用的是HikariCP(这很好,应该使用),则可以添加以下内容:

<property name="hibernate.hikari.connectionTestQuery">SELECT 1</property>

10-06 06:08