`

Mysql异常com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:Communications li

 
阅读更多
org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet successfully received from the server was 6,388 milliseconds ago.  The last packet sent successfully to the server was 1,504 milliseconds ago.
        at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:240)

主要原因:上述问题是由mysql5数据库的配置引起的。mysql5将其连接的等待时间(wait_timeout)缺省为8小时。在其客户程序中可以这样来查看其值:

mysql﹥

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)在jdbc连接url的配置中,你可以附上“autoReconnect=true”,但这仅对mysql5以前的版本起作用。

(2)既然问题是由mysql5的全局变量wait_timeout的缺省值太小引起的,我们将其改大就好了。
查看mysql5的手册,发现对wait_timeout的最大值分别是24天/365天(windows/linux)。以windows为 例,假设我们要将其设为21天,我们只要修改mysql5的配置文件“my.ini”(mysql5 installation dir),增加一行:wait_timeout=1814400 ,需要重新启动mysql5。
linux系统配置文件:/etc/my.cnf

(3)我们可以将数据库连接池的 validateQuery、testOnBorrow(testOnReturn)打开,这样在 每次从连接池中取出且准备使用之前(或者使用完且在放入连接池之前)先测试下当前使用是否好用,如果不好用,系统就会自动destory掉。
或者testWhileIdle项是设置是否让后台线程定时检查连接池中连接的可用性。
分享到:
评论
1 楼 zhangrui0911 2016-06-03  
您好,请问下,这个问题是在数据库没有任何操作时出现的么?
我也遇到相同的问题,但是是在测试过程中出现的问题,无法连接数据库

相关推荐

    解决Cause com.mysql.jdbc.exceptions.jdbc4.CommunicationsException

    Cause com.mysql.jdbc.exceptions.jdbc4.CommunicationsException The last packet successfully received from the server was 47,795,922 milliseconds ago. The last packet sent successfully to the server was...

    mysql 异常com.mysql.jdbc.CommunicationsException

    ### MySQL异常com.mysql.jdbc.CommunicationsException解析及解决方案 #### 异常概述 在Java应用程序中使用MySQL数据库时,可能会遇到`com.mysql.jdbc.CommunicationsException`这一异常。该异常通常意味着与MySQL...

    Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: ….. this is incompatible with sq

    1、写在开头 标题之前我想说一下Linux的mysql真的实在是太坑了。太坑了。总是会出现这样那样的你想不到的问题。崩溃了。首先来罗列一下我遇到过的...Cause:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorExcepti

    com.mysql.jdbc.PacketTooBigException: Packet for query is too large (11087 > 102

    `com.mysql.jdbc.PacketTooBigException` 是MySQL JDBC驱动抛出的一个异常,它表示在网络传输过程中,发送到服务器的数据包超过了MySQL服务器允许的最大大小。在描述中提到的错误信息 "Packet for query is too ...

    mysql数据库在springboot项目中启动报错问题.docx

    在给定的信息中,我们注意到一个具体的错误信息:“com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error:GlobalConfigUtils setMetaData Fail !”。这个错误提示表明在使用 MyBatis Plus 时出现...

    MySQL数据库连接异常汇总(值得收藏)

    在Centos上部署项目发现一个奇怪的问题,数据库连接一直抛异常。于是花了两个小时搜了各种数据库连接异常导致的原因,最终问题得以解决。同时,把解决过程中搜集到的异常信息汇总一下,当大家遇到...com.mysql.jdbc.exc

    linux 后台日志 mysql 错误异常的解释(推荐)

    1、Caused by: com.MySQL.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 56,201,339 milliseconds ago. The last packet sent successfully to the...

    c-jdbc 详细配置方案

    C-JDBC,全称Cluster JDBC,是一款用于数据库集群的中间件,它允许应用程序同时访问和操作多个数据库,实现数据的同步交换。以下是对C-JDBC的详细配置方案及其相关知识点的解析: 1. **下载与安装**: - 从官方...

    bitronix 连接 MySQL 出现MySQLSyntaxErrorException 的解决方法

    Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Access denied for user ''@'localhost' to database 'hibernate' at sun.reflect.NativeConstructorAccessorImpl.new

    mysqljdbc src

    5. **异常处理**:`com.mysql.jdbc.exceptions`包包含了各种可能的数据库交互异常,如`SQLException`,这些异常在出现问题时被抛出,帮助开发者定位问题。 6. **性能优化**:源代码中包含了一些性能优化策略,例如...

    Dbvisualizer安装及连接mysql oracle sqlServer配置

    对于MySQL,驱动类名通常是`com.mysql.jdbc.Driver`;Oracle则是`oracle.jdbc.driver.OracleDriver`;而对于SQL Server,驱动类名是`com.microsoft.sqlserver.jdbc.SQLServerDriver`。确保正确选择并输入这些信息,...

    mysql-connector-java-5.1.12.rar 源代码

    MySQL Connector/J 5.1.12 是 MySQL 官方提供的用于 Java 应用程序...3. com.mysql.jdbc.exceptions 包:包含所有由 MySQL Connector/J 抛出的异常类,如 `com.mysql.jdbc.exceptions.MySQLSyntaxErrorException` 和 `...

    MyEclipse8.x 汉化

    值得注意的是,汉化虽然方便了中文用户的使用,但有时也可能导致一些非预期的问题,比如功能异常、界面显示不全等。因此,保持MyEclipse的更新和使用官方版本的语言包是最佳选择。同时,学习和熟悉英文版的MyEclipse...

    mysql8驱动源码.zip

    7. **错误处理**:`com.mysql.cj.jdbc.exceptions` 包下的异常类封装了与数据库交互时可能出现的各种错误,便于开发者进行异常处理。 8. **连接池支持**:驱动支持常见的连接池框架,如 C3P0、HikariCP、Druid 等,...

    nacos-server-1.2.0-mysql8.zip

    4. **命名空间**:Nacos引入了命名空间的概念,可以隔离不同环境(如开发、测试、生产)的配置,保证各个环境的配置不互相干扰。 5. **权重分配**:Nacos支持动态分配服务实例的权重,可以根据业务需求调整服务实例...

    mysql-connector-java-5.1.48 (1).jar

    5. `com.mysql.jdbc.exceptions`: MySQL特有的异常类,如`MySQLSyntaxErrorException`、`MySQLIntegrityConstraintViolationException`等,这些异常在处理数据库操作时可能会被抛出。 使用这个驱动,开发者可以创建...

    java mysql驱动源码

    例如,`com.mysql.jdbc.exceptions`包下包含了一系列异常类,用于处理在数据库操作中可能出现的问题。`com.mysql.jdbc.JDBC4Connection`是JDBC 4版本的连接实现,增加了新的特性支持。 深入理解Java MySQL驱动源码...

    mysql-5.5.14.tar.gz

    CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" cmake . -LH|more //CMake下查看MySQL的编译配置 cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DEXTRA_CHARSETS=all make make ...

    mysql-connector-java-5.1.33-bin.src源码

    6. **异常处理**: 源码中包含了大量的异常类,如`com.mysql.jdbc.exceptions.MySQLSyntaxErrorException`,这些异常类对应于MySQL数据库的各种错误情况,帮助开发者诊断和解决问题。 7. **性能优化**: MySQL ...

    mysql_jdbc连接数据库-错误提示.pdf

    Exception in thread "main" com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown database 'hrtrain' ``` **解决方法**: - 确认数据库名称是否正确。 - 检查MySQL服务状态,确保其正在运行。 #### 五...

Global site tag (gtag.js) - Google Analytics