专栏首页Java后端技术解决Java程序连接mysql数据库出现CommunicationsException: Communications link failure错误的问题

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

一、背景

  最近在家里捣鼓一个公司自己搭建的demo的时候,发现程序一启动就会出现CommunicationsException: Communications link failure错误,经过一番排查最后发现是数据库url写错造成的,这个过程中也对出现这个错误的解决思路有了一些自己的理解,现和大家分享。该错误的具体信息如下:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:981)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:339)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2253)
    ......

二、解决问题步骤

1.检查你的数据库连接地址(配置文件中的url)是否正确.

2.有可能是由mysql5数据库的配置引起的。mysql5将其连接的等待时间(wait_timeout)缺省为8小时。在其客户程序中可以这样来查看其值: 

mysql > show global variables like 'wait_timeout'; 
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout  | 28800 |
+---------------+-------+
1 row in set (0.00 sec)

28800 seconds,也就是8小时,如果在wait_timeout秒期间内,数据库连接(java.sql.Connection)一直处于等待状态,mysql5就将该连接关闭。这时,你的Java应用的连接池仍然合法地持有该连接的引用。当用该连接来进行数据库操作时,就碰到上述错误。

三、解决方式

1.mysql5以前的版本可以直接在jdbc连接url的配置中附加上“autoReconnect=true”。

2.将mysql的全局变量wait_timeout的值修改为最大。查看mysql5的手册,发现windows和linux下wait_timeout的最大值分别是24天和365天。

 (1).在文件my.ini的最后增加一行:wait_timeout=1814400。(该文件,windows下在mysql的安装目录下,linux下位置为/etc/my.ini)

 (2).重启mysql。

3.如果经过了以上的步骤,你的问题依旧没有的到解决,则建议你修改下你程序中的mysql驱动的版本。

四、总结

  通过本问题的解决,我们认识到如果碰到问题,首先不要慌,然后从最近的位置进行排查,最后一定能够完美解决问题。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 拥抱了IDEA却发现再也回不去Eclipse...

    还记得去年入职的时候,发现很多同事都在用Intellij IDEA,其实在那之前都已经接触过,只不过没有在开发中实际应用而已. 这时候我下定决心要拥抱IDEA...

    阿豪聊干货
  • 可以落地的DDD到底长什么样?

    ​  大家都知道软件开发不是一蹴而就的事情,我们不可能在不了解产品(或行业领域)的前提下进行软件开发,在开发前通常需要进行大量的业务知识梳理,然后才能到软件设计...

    阿豪聊干货
  • 带你熟悉CSS浮动

      浮动:顾名思义先浮后动,浮动的对象会先漂浮起来,离开自己原来的位置(也就是所谓的脱离文档流),后动的意思是,它的后面的元素会向它原来的位置动起来。

    阿豪聊干货
  • Spark Streaming Failed to read checkpoint from directory ...现象解决方案及原因

    使用spark-submit提交一个Spark Streaming Application至yarn集群, 报错

    codingforfun
  • 比起前台MM 前台机器人有哪些优势?

    当你拜访一家公司,发现前台是一位帅气的机器人,它能跟你打招呼,询问你的需求,让你在高大上的氛围中享受人工智能的魅力,不用面对因为心情不好或者太忙碌导致态度很差的...

    企鹅号小编
  • 从吴恩达到LeCun,AI研究院到底需要哪种类型领军人?

    编辑:裴七 张乾 【新智元导读】本周LeCun卸任FAIR负责人。Facebook公司发言人Ari Entin表示,LeCun的新职位反映了Facebook研究...

    新智元
  • Ubuntu环境下IPython的搭建和使用

    1. Ubuntu操作系统版本 ? ? 说明:Ubuntu 12.04.3 LTS自带的Python 2.7.3版本。 2. 安装IPython ? 说明: ?...

    Angel_Kitty
  • 【AI也拯救不了Facebook】用户从未同意用隐私换便利

    新智元报道 来源:VentureBeat;NYT等 作者:文强,克雷格 【新智元导读】在扎克伯格的国会听证中,“AI”一词出现了不下30次,人工智能真能...

    新智元
  • 在灾后重建和逃生演习中,VR也能“暖”起来并发挥作用

    VRPinea
  • “暗云”BootKit木马详细技术分析

    “暗云”木马简介: “暗云”是一个迄今为止最复杂的木马之一,感染了数以百万的计算机,暗云木马使用了很多复杂的、新颖的技术来实现长期地潜伏在用户的计算机系统中。其...

    FB客服

扫码关注云+社区

领取腾讯云代金券