簡體   English   中英

MySQL:EOFException:無法讀取來自服務器的響應。 預期讀取4個字節,在連接意外丟失之前讀取0個字節

[英]MySQL : EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost

我有一個帶有石英調度程序的Spring應用程序,用於批處理。 最近4年以來一切正常。 每1分鍾運行一次批處理。 但是從最近幾天開始,當該批處理試圖獲取某些數據時,我們突然收到org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Could not open connection org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Could not open connection

該批次全天運行,但有時會出現此異常,而所有其他批次均無法連接到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>

會話工廠連接池配置

<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>

可能是運行您的數據庫服務器的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

最近,我們遇到了同樣的問題。 我們的應用程序無法連接到AWS Aurora實例。 我們最終將sql驅動程序更改為mariadb。 希望這會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM