com.mysql.jdbc.exceptions.jdbc4.CommunicationsException||java.net.SocketException: Broken pipe

来源:互联网 发布:淘宝网夏季女装 编辑:程序博客网 时间:2024/05/17 08:31

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException||java.net.SocketException: Broken pipe

描述:
    
    用jpa(hibernate实现)做应用时,程序中报以下错误:
    com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: 
    The last packet successfully received from the server was 79,221,885 milliseconds ago. 
    The last packet sent successfully to the server was 79,221,885 milliseconds ago. 
    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. 

解释及解决办法: 
 
    如果连接闲置8小时 (8小时内没有进行数据库操作), mysql就会自动断开连接, 得刷新应用才行. 
    不用hibernate的话, connection url加参数: autoReconnect=true 
    用hibernate的话, 加如下属性: 
        <property name="connection.autoReconnect">true</property> 
        <property name="connection.autoReconnectForPools">true</property> 
        <property name="connection.is-connection-validation-required">true</property>
 
    要是还用c3p0连接池: 
        <property name="hibernate.c3p0.acquire_increment">1</property> 
        <property name="hibernate.c3p0.idle_test_period">0</property> 
        <property name="hibernate.c3p0.timeout">0</property> 
        <property name="hibernate.c3p0.validate">true</property>