Hibernate连接数据库超时设置autoReconnect=true

来源:互联网 发布:女装品牌推荐 知乎 编辑:程序博客网 时间:2024/05/17 23:21

com.mysql.jdbc.CommunicationsException: The last packet successfully received from the server was58129 seconds ago.The last packet sent successfully to the server was 58129 seconds ago, which is longer than the server configured value of'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property'autoReconnect=true' to avoid this problem.

 

 <q<T  原因是连接数据库超时了,目前先把 URL 改成
jdbc.url=jdbc:mysql://ipaddress:3306/database?autoReconnect=true&amp;autoReconnectForPools=true
然后数据库连接池中增加设置如下:
        <property name="validationQuery">
            <value>SELECT 1</value>
        </property>
        <property name="testOnBorrow">
            <value>true</value>
        </property>
测试两天看是可以解决问题。

如果还是出问题,可虑使用另一个方案:
1. 移除 autoReconnect=true&amp;autoReconnectForPools=true这两个在 URL 中配置的属性
2. 更新连接池框架为  C3P0, 参考其在 Hibernate 中的配置如下:

<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="c3p0.min_size">5</property>
<property name="c3p0.max_size">30</property>
<property name="c3p0.time_out">1800</property> <!-- seconds --><!-- default: 0 -->
<property name="c3p0.max_statement">50</property> <!-- default: 0 -->
<property name="c3p0.acquire_increment">1</property> <!-- default: 1 -->
<property name="c3p0.idle_test_period">120</property>  <!-- seconds --><!-- default: 0 -->
<property name="c3p0.validate">true</property>原因是连接数据库超时了,目前先把 URL 改成
jdbc.url=jdbc:mysql://ipaddress:3306/database?autoReconnect=true&amp;autoReconnectForPools=true
然后数据库连接池中增加设置如下:
        <property name="validationQuery">
            <value>SELECT 1</value>
        </property>
        <property name="testOnBorrow">
            <value>true</value>
        </property>
测试两天看是可以解决问题。

如果还是出问题,可虑使用另一个方案:
1. 移除 autoReconnect=true&amp;autoReconnectForPools=true这两个在 URL 中配置的属性
2. 更新连接池框架为  C3P0, 参考其在 Hibernate 中的配置如下:

<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="c3p0.min_size">5</property>
<property name="c3p0.max_size">30</property>
<property name="c3p0.time_out">1800</property> <!-- seconds --><!-- default: 0 -->
<property name="c3p0.max_statement">50</property> <!-- default: 0 -->
<property name="c3p0.acquire_increment">1</property> <!-- default: 1 -->
<property name="c3p0.idle_test_period">120</property>  <!-- seconds --><!-- default: 0 -->
<property name="c3p0.validate">true</property>

原因是连接数据库超时了,目前先把 URL 改成
jdbc.url=jdbc:mysql://ipaddress:3306/database?autoReconnect=true&amp;autoReconnectForPools=true
然后数据库连接池中增加设置如下:
        <property name="validationQuery">
            <value>SELECT 1</value>
        </property>
        <property name="testOnBorrow">
            <value>true</value>
        </property>
测试两天看是可以解决问题。

如果还是出问题,可虑使用另一个方案:
1. 移除 autoReconnect=true&amp;autoReconnectForPools=true这两个在 URL 中配置的属性
2. 更新连接池框架为  C3P0, 参考其在 Hibernate 中的配置如下:

<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="c3p0.min_size">5</property>
<property name="c3p0.max_size">30</property>
<property name="c3p0.time_out">1800</property> <!-- seconds --><!-- default: 0 -->
<property name="c3p0.max_statement">50</property> <!-- default: 0 -->
<property name="c3p0.acquire_increment">1</property> <!-- default: 1 -->
<property name="c3p0.idle_test_period">120</property>  <!-- seconds --><!-- default: 0 -->
<property name="c3p0.validate">true</property>

 

<property name="connection.autoReconnect">true</property> bm%_7
        <property name="connection.autoReconnectForPools">true</property> :]hKB$
        <property name="connection.is-connection-validation-required">true</property>
:\@q^g PN