巨郁闷,一切都是驱动惹的祸

本文记录了一个将Web应用从CentOS5.2迁移到CentOS5.3时遇到的MySQL连接失败问题。通过逐步排查,发现是由MySQL驱动版本不兼容导致,并最终通过升级驱动解决了该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天把一个web应用移到另一个服务器上,出现问题mysql连接不上了

前面的服务器平台CentOS5.2 单网卡
迁移的服务器是CentOS5.3 双网卡。

ip没有变化,迁移的服务器做了双网卡的处理。

程序启动后,提示错误

Caused by: 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:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1119)
at com.mysql.jdbc.MysqlIO.(MysqlIO.java:343)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2178)
… 18 more
Caused by: java.net.NoRouteToHostException: No route to host
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:525)
at java.net.Socket.connect(Socket.java:475)
at java.net.Socket.(Socket.java:372)
at java.net.Socket.(Socket.java:215)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:253)
at com.mysql.jdbc.MysqlIO.(MysqlIO.java:292)
… 19 more

这里很明显,是建立连接的时候,出问题了,马上检查防火墙。IP,端口等配置

一切都是正常的。

而且直接用mysqlclient在本机上连接没有问题
mysql -pxxxxxxx -hxxxxxxxx -u xxxxxxxxxxxxx -D xxxxxxxxx -PXXXX
这就太奇怪了。原来的服务器上好好的。而且用mysqldump导出和导入数据都是昨天做的,一点问题都没有,怎么上到这个就出问题了。是不是驱动的问题 呀。马上在服务器上写了个程序。连接另一个mysql server。一切都是OK了。

NND,这个问题究竟出现在哪里呀。

问了一下负责系统安装的人,这个Centos也没有做什么特殊的处理,

这时候才注意到了Centos的版本变化5.2 to 5.3, 这个版本会不会导致mysql的版本也不一致了呀

在两台机器上查了一下
一个是CentOS 5.2上的
mysql Ver 14.12 Distrib 5.0.77, for redhat-linux-gnu (x86_64) using readline 5.1
一个是CentOS 5.2上的
mysql Ver 14.14 Distrib 5.1.42, for unknown-linux-gnu (x86_64) using readline 5.1

也许就是这个问题所导致吧。

到maven的官方repository上查了一下,果然已经有更新了。
以前用的是5.0.9现在最新的是5.1.12
期间先后发了三个版本
5.1.10/ 22-Sep-2009 14:10 -
5.1.11/ 20-Jan-2010 21:30 -
5.1.12/ 22-Feb-2010 17:45

在pom.xml里换上最新的5.1.12,mvn,然后发布到服务器上。
OK。

唉,为什么版本本没有多大的变化,怎么就这样的不兼容,这个back compatiable是做的不好了。搞的我在这里花了这么多的时间,

不过说回来 拳不离手,曲不离口,做程序员也是如此呀。现在慢慢的淡出了java的编程,主做数据库这块。所以也关注的少了。
更丢了不少东西呀。不过Oracle依然是我的最爱。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

inthirties

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值