Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MySQL:EOFEException:无法从服务器读取响应。预期读取4个字节,在连接意外丢失之前读取0个字节_Java_Mysql_Spring_Hibernate - Fatal编程技术网

Java MySQL:EOFEException:无法从服务器读取响应。预期读取4个字节,在连接意外丢失之前读取0个字节

Java MySQL:EOFEException:无法从服务器读取响应。预期读取4个字节,在连接意外丢失之前读取0个字节,java,mysql,spring,hibernate,Java,Mysql,Spring,Hibernate,我有一个Spring应用程序,带有用于批处理的quartz调度程序。从过去的4年来看,它运转良好。有一批每1分钟运行一次。但从前几天开始,当批处理试图获取一些数据时,我们突然得到org.springframework.transaction.CannotCreateTransactionException:无法打开Hibernate会话进行事务处理;嵌套异常为org.hibernate.exception.jdbconnectionexception:无法打开连接 此批处理整天都在运行,但有时会

我有一个Spring应用程序,带有用于批处理的quartz调度程序。从过去的4年来看,它运转良好。有一批每1分钟运行一次。但从前几天开始,当批处理试图获取一些数据时,我们突然得到
org.springframework.transaction.CannotCreateTransactionException:无法打开Hibernate会话进行事务处理;嵌套异常为org.hibernate.exception.jdbconnectionexception:无法打开连接

此批处理整天都在运行,但有时会出现此异常,而所有其他批处理都无法连接到MySQL。因此,我们正在重新启动应用程序,它工作正常

数据源配置

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="url">
            <value>${DATABASE_URL}</value>
        </property>
        <property name="driverClassName">
            <value>com.mysql.jdbc.Driver</value>
        </property>
        <property name="username">
            <value>${DATABASE_USER}</value>
        </property>
        <property name="password">
            <value>${DATABASE_PASSWORD}</value>
        </property>
</bean>

${DATABASE_URL}
com.mysql.jdbc.Driver
${DATABASE_USER}
${DATABASE_PASSWORD}
会话工厂连接池配置

<bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.enable_lazy_load_no_trans">true</prop>
<!-- Configurations specific to c3p0 connection pooling -->

<prop key="hibernate.c3p0.acquire_increment">5</prop>
<prop key="hibernate.c3p0.idle_test_period">1800</prop>
<prop key="hibernate.c3p0.max_size">600</prop>
<prop key="hibernate.c3p0.max_statements">50</prop>
<prop key="hibernate.c3p0.min_size">5</prop>
<prop key="hibernate.c3p0.timeout">1800</prop>
</props>
</property>
<property name="annotatedClasses">
<list> .... </list>
</property>
</bean>

org.hibernate.dialogue.mysqldialogue
假的
真的
5.
1800
600
50
5.
1800
.... 

最近我们遇到了类似的问题。我们的应用程序无法连接到aws Aurora实例。我们最终做的是将sql驱动程序更改为mariadb驱动程序。希望这会有所帮助。

可能是运行数据库服务器的mysql有问题

更改数据库服务器中的mysql配置

在[mysqld]部分的mysql.cnf中添加绑定地址

bind-address=your_spring_application_ip
还要更改mysql用户的访问主机。 在mysql中运行以下查询

update mysql.user set host='%' where user='your_username';
flush privileges;
然后重新启动mysql服务

sudo systemctl restart mysql

您的数据库url是什么?jdbc:mysql://.rds.amazonaws.com:/But 从过去4年开始,它一整天都运转良好,但突然间它失败了。没有固定的失败时间。那么你认为上述方法对我有帮助吗?不确定。但请尝试使用mysql命令行连接到远程数据库。如果这不起作用,试试上面的解决方案。我试着从应用服务器连接到MySQL服务器,它正在起作用。