###获取新连接时出错。原因:java.sql.SQLException:I / O错误:Socket已关闭

时间:2017-09-28 08:15:59

标签: java spring-mybatis sql-sessions

尝试openSqlSession时发生异常,为什么

错误日志

2017-09-27 21:14:32,409 [pool-13-thread-1] ERROR - test sql error
org.apache.ibatis.exceptions.PersistenceException: 
### Error getting a new connection.  Cause: java.sql.SQLException: I/O Error: Socket closed
### Cause: java.sql.SQLException: I/O Error: Socket closed
    at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.getConnection(DefaultSqlSession.java:300)

JAVA CODE

sqlSession = sqlSessionFactory.openSession(autoCommit);

数据库配置

<dataSource type="POOLED">
        <property name="driver" value="${driver}" />
        <property name="url" value="${url}" />
        <property name="username" value="${username}" />
        <property name="password" value="${password}" />
        <property name="poolPingEnabled" value="true" />
        <property name="poolPingQuery" value="SELECT 1" />
        <property name="poolPingConnectionsNotUsedFor" value="3600000" />
    </dataSource>   

1 个答案:

答案 0 :(得分:0)

'I/O Error: Socket closed'异常意味着JDBC客户端和服务器之间的连接由于某种原因而被关闭。

如果您没有使用任何池,我的建议是使用一些连接池库。

原因可能是以下之一:

  1. 您尝试对已关闭的连接执行查询。
  2. 由于网络问题,操作系统可能会终止连接。
  3. 数据库服务器已关闭。
  4. 因为结果太长而无法读取或查询需要花费大量时间才能执行