Java SQL错误:0,SQLState:08S01通信链路故障

Java SQL错误:0,SQLState:08S01通信链路故障,java,mysql,hibernate,jdbc,Java,Mysql,Hibernate,Jdbc,我收到此错误(不太频繁): 我有两个web(spring mvc+hibernate+mysql)应用程序托管在共享服务器上: 1) 显示下载文件的主应用程序(通过管理员应用程序插入) 2) 带有CRUD操作的管理应用程序 当我使用“admin”应用程序为“main”应用程序上载文件时,有时会出现此错误,比如说,可能是在成功上载/处理了大约100-120个文件/请求之后,并且在每个请求中都会使用10-20个插入/更新查询访问数据库 托管详细信息: Private tomcat hosting j

我收到此错误(不太频繁):

我有两个web(spring mvc+hibernate+mysql)应用程序托管在共享服务器上:

1) 显示下载文件的主应用程序(通过管理员应用程序插入)

2) 带有CRUD操作的管理应用程序

当我使用“admin”应用程序为“main”应用程序上载文件时,有时会出现此错误,比如说,可能是在成功上载/处理了大约100-120个文件/请求之后,并且在每个请求中都会使用10-20个插入/更新查询访问数据库

托管详细信息:

Private tomcat hosting
java 1.6.0_35-b10
tomcat 7.0.35
heap size 288MB
MySQL Server 5
commons-dbcp 1.2.2
mysql-connector-java 5.1.9
数据库+Hibernate+DBCP属性:

<bean id="dbDataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="username" value="test" />
    <property name="password" value="test" />
    <property name="url" value="jdbc:mysql://localhost/my_database?useUnicode=yes&characterEncoding=UTF-8" />

    <!-- DBCP Connection Pool Settings -->
    <property name="defaultAutoCommit" value="true" />
    <property name="initialSize" value="10" />
    <property name="maxActive" value="500" />
    <property name="maxIdle" value="8" />
    <property name="minIdle" value="0" />
    <property name="maxWait" value="30000" />
    <property name="validationQuery" value="SELECT 1" />
    <property name="testOnBorrow" value="true" />
    <property name="testOnReturn" value="false" />
    <property name="testWhileIdle" value="false" />
    <property name="timeBetweenEvictionRunsMillis" value="-1" />
    <property name="numTestsPerEvictionRun" value="3" />
    <property name="minEvictableIdleTimeMillis" value="180000" />
    <property name="poolPreparedStatements" value="true" />
    <property name="maxOpenPreparedStatements" value="25" />
    <property name="accessToUnderlyingConnectionAllowed" value="false" />
    <property name="removeAbandoned" value="false" />
    <property name="removeAbandonedTimeout" value="300" />
    <property name="logAbandoned" value="false" />
</bean>

hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.hbm2ddl.auto=none
hibernate.jdbc.batch_size=100
hibernate.show_sql=false
hibernate.format_sql=false
hibernate.cache.use_second_level_cache=true
hibernate.cache.use_query_cache=false
hibernate.cache.provider_class=org.hibernate.cache.NoCacheProvider
hibernate.current_session_context_class=thread

有没有解决此问题的建议?

在函数完成处理之前,驱动程序与驱动程序试图连接的数据源之间的通信链路失败。
所以通常是网络错误。这可能是由于数据包丢失或防火墙/交换机配置不当造成的

检查您的服务器配置文件
/etc/mysql/my.cnf
-验证
bind\u address
未设置为
127.0.0.1
。将其设置为
0.0.0.0
或将其注释掉,然后使用以下命令重新启动服务器:

sudo service mysql restart

可能是由于TCP协议已关闭

如何检查/启用:
我正在回答这个错误代码(08s01)的具体问题

通常,MySql close套接字连接是MySql服务器端定义的等待超时时间间隔,默认为8小时。因此,如果连接在此时间之后超时,套接字将抛出一个异常,该异常的SQLState为“08s01”

1.使用连接池执行查询,确保池类具有在超时前检查连接成员的功能

2.给出一个大于默认值的值,但最大值为24天


3.在连接URL中使用另一个参数,但不建议使用此方法,也可能不推荐使用此方法。

查看mysql日志。看看其中是否有什么东西可以解释为什么连接意外断开。可能是事务超时?我遇到了问题中描述的类似问题。我同意Marciej的回答。在企业网络上,我的本地开发人员机器正在断开与db服务器的连接,但是位于不同防火墙组后面的deploy environment服务器能够连接到同一个db并维护其连接,而不会出现问题。我的本地开发人员计算机将在安装后2分钟内断开连接。我还发现,运行无线网络可以保持连接,而wired则不能(两者都通过不同的路由/防火墙)。当套接字超时小于查询时间时,长时间运行的查询也会发生这种情况。jdbc:mariadb:aurora://myHost/db?socketTimeout=0 可用于设置socketTimeout值。我在Mac中找不到
/etc/mysql
文件夹。我需要为Mac搜索任何其他文件吗?谢谢,这是我的问题。我有相同的错误,但在配置文件中找不到bind_地址。这可能是错误的原因吗?这似乎很有用……您能解释一下这些步骤吗……我如何提供检查功能以及等待超时是如何工作的。
public String createFilePackage(FilePackage package) {
    String message = "";

    Session session = getSessionFactory().openSession();
    Transaction tx = null;
    try {
        tx = session.beginTransaction();

        // handling package, around 10-14 DB insert, 10 SELECT and 5 update queries on same session

        tx.commit();

    } catch(Exception e) {
        logger.error("file-upload: Exception while adding new font package", e);
        if(tx != null) { tx.rollback(); }
    } finally {
        session.close();
    }
    return message;
}
sudo service mysql restart