登录
首页 >  数据库 >  MySQL

SpringMVC+MyBatis构建JavaWEB项目长时间空置后执行数据库操作报错

来源:SegmentFault

时间:2023-01-10 16:50:11 466浏览 收藏

有志者,事竟成!如果你在学习数据库,那么本文《SpringMVC+MyBatis构建JavaWEB项目长时间空置后执行数据库操作报错》,就很适合你!文章讲解的知识点主要包括MySQL、Java、mybatis,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

MySQl的默认连接时长为8个小时,如果超过8个小时连接而没有对数据库的操作的话就会断开,此时再访问会报错

java.io.EOFException
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1913)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2304)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2803)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
...

这个问题在不同的MySQL版本可以有着不同的解决方案
例如在MySQL5之前可以在数据库连接的url中加入“autoReconnect=true”(这仅对mysql5之前有作用)也可以更改MySQL的配置文件将默认的8个小时更改为更长的时间,这里不再介绍

在这里介绍使用MyBatis+C3P0数据库连接池来解决这个问题

首先在pom.xml中引入C3P0

com.mchangec3p00.9.5.4

更改MyBatis的配置文件

    

image.png

注意MyBatis配置文件中的dataSource(数据源)属性的设置为下面的类文件

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.ibatis.datasource.unpooled.UnpooledDataSourceFactory;

/**
 * 创建C3P0与MyBatis兼容的数据源工厂类
 */
public class C3P0DataSourceFactory extends UnpooledDataSourceFactory {
    public C3P0DataSourceFactory() {
        this.dataSource = new ComboPooledDataSource();
    }
}

至此,就解决了MyBatis连接数据库超过8小时自动断开的问题

以上就是《SpringMVC+MyBatis构建JavaWEB项目长时间空置后执行数据库操作报错》的详细内容,更多关于mysql的资料请关注golang学习网公众号!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表