Java MySQL:EOFEException:无法从服务器读取响应。预期读取4个字节,在连接意外丢失之前读取0个字节
我有一个Spring应用程序,带有用于批处理的quartz调度程序。从过去的4年来看,它运转良好。有一批每1分钟运行一次。但从前几天开始,当批处理试图获取一些数据时,我们突然得到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:无法打开连接 此批处理整天都在运行,但有时会
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服务器,它正在起作用。