昨天把一个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依然是我的最爱。