我有一个带有 Apache -> mod_jk -> Tomcat 6 -> MySQL 的 Ubuntu 服务器。每次 Tomcat 加载一个新的 *.war 或重新启动时,它都会给我这个错误:
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:532)
现在奇怪的是:有时在一段时间后(有时是几分钟或几小时)什么都不做,应用程序运行起来就像一个魅力 - 没有任何其他错误。
连接是通过 tomcat 本身(使用这个上下文容器)建立的,并与 127.0.0.1 建立连接 phpmyadmin 也没有问题。
最佳答案
雷米, 不幸的是,这个问题没有一个“简单”的答案,因为它在很多方面都有所不同。您收到的错误是一般通信错误,tomcat 返回表示通信问题,但没有详细说明问题是什么。
首先,我建议检查您的 mysql 是否正在监听 127.0.0.1,而不仅仅是本地主机。差异化的原因是具有 ipv6 的服务器(即使它只是本地::1)将首先尝试优先使用此连接。
如果你执行 netstat -an | grep LISTEN,您应该看到端口 3306。那个套接字在监听什么?确保这与您在 tomcat 设置中指定的内容相匹配,然后从那里继续。
关于mysql - Tomcat 6 MySQL -> 奇怪的连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18120169/