• 【mysql】mysql数据库出现Communications link failure


    Java程序连接mysql数据库出现CommunicationsException: Communications link failure错误的问题,待继续整理补充TODO

    问题

    com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
    
    The last packet successfully received from the server was 31 milliseconds ago. The last packet sent successfully to the server was 36 milliseconds ago.
    	at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174)
    	at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64)
    	at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
    	at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:370)
    	at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3461)
    	at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_execute(FilterEventAdapter.java:440)
    	at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3459)
    	at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_execute(FilterEventAdapter.java:440)
    	at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3459)
    	at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.execute(PreparedStatementProxyImpl.java:167)
    	at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:497)
    	at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:64)
    	at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79)
    	at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:63)
    	at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325)
    	at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
    	at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
    	at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:89)
    	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151)
    	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:145)
    	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140)
    	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:135)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    排查

    有可能是由mysql数据库的配置引起的。mysql将其连接的等待时间(wait_timeout)缺省为8小时。在其客户程序中可以这样来查看其值: 28800 seconds,也就是8小时,如果在wait_timeout秒期间内,数据库连接(java.sql.Connection)一直处于等待状态,mysql就将该连接关闭。这时,你的Java应用的连接池仍然合法地持有该连接的引用。当用该连接来进行数据库操作时,就碰到上述错误。

    mysql > show global variables like ‘wait_timeout’;
    在这里插入图片描述
    在这里插入图片描述

    解决

    1.mysql5以前的版本可以直接在jdbc连接url的配置中附加上“autoReconnect=true”。
    2.将mysql的全局变量wait_timeout的值修改为最大。在文件my.ini的最后增加一行:wait_timeout=1814400

    参考

    com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

    将 Java 连接到 MySQL 数据库

    解决Java程序连接mysql数据库出现CommunicationsException: Communications link failure错误的问题

  • 相关阅读:
    亚马逊云科技 2023 柏林峰会主题演讲总结
    设计模式面试系列-02
    Java this 关键字
    一句话总结敏捷实践中不同方法
    Mybatis深入:使用Spring事务管理
    数字未来:探索 Web3 的革命性潜力
    接口访问量统计
    【构建并发程序】1-线程池-Executor-ExecutionContext
    PCN-224,PCN-224(H),CAS:1476810-88-4,金属有机骨架材料PCN-224(H)
    【网站架构】集群性能并非无限扩展,几千万几亿的网站系统贵在哪
  • 原文地址:https://blog.csdn.net/u010638673/article/details/126744321