Ich benutze Ubuntu und versuche letztendlich, Tomcat über JDBC mit meiner MySQL-Datenbank zu verbinden.Verbindung zu MySQL kann nicht mit JDBC hergestellt werden - Verbindungstimeout - Ubuntu 9.04
Es hat zuvor funktioniert, aber nach einem Neustart kann die Instanz jetzt keine Verbindung herstellen.
- Sowohl Tomcat 6 und MySQL 5.0.75 sind auf der gleichen Maschine
- Verbindungszeichenfolge: jdbc: mysql: /// localhost: 3306
- ich MySQL auf der Kommandozeile verbinden können die
mysql
mit Befehl - die my.cnf ist ziemlich Standard (auf Anfrage) hat binden Adresse: 127.0.0.1
- ich kann nicht mit dem MySQL-Port trotz netstat Telnet MySQL sagen hört
- ich eine iptables-Regel haben weiterleiten 80 -> 8080 und keine Firewall die mir bekannt ist.
Ich bin ziemlich neu und ich bin mir nicht sicher, was noch zu testen. Ich weiß nicht, ob ich in etc/interfaces suchen sollte und ob ich was zu suchen habe. Es ist komisch, weil es früher funktioniert hat, aber nach einem Neustart ist es ausgefallen, also muss ich etwas geändert haben ... :).
Ich weiß, ein Timeout zeigt an, dass der Server nicht reagiert, und ich nehme an, es ist, weil die Anfrage nicht wirklich durchkommt. Ich habe MySQL über apt-get und Tomcat manuell installiert.
mysqld-Prozesse
[email protected]:/var/log/mysql# ps -ef | grep mysqld
root 21753 1 0 May27 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe
mysql 21792 21753 0 May27 ? 00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock
root 21793 21753 0 May27 ? 00:00:00 logger -p daemon.err -t mysqld_safe -i -t mysqld
root 21888 13676 0 11:23 pts/1 00:00:00 grep mysqld
Netstat
[email protected]:/var/log/mysql# netstat -lnp | grep mysql
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 21792/mysqld
unix 2 [ ACC ] STREAM LISTENING 1926205077 21792/mysqld /var/run/mysqld/mysqld.sock
Toy Connection-Klasse
[email protected]:~# cat TestConnect/TestConnection.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class TestConnection {
public static void main(String args[]) throws Exception {
Connection con = null;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
System.out.println("Got driver");
con = DriverManager.getConnection(
"jdbc:mysql:///localhost:3306",
"uname", "pass");
System.out.println("Got connection");
if(!con.isClosed())
System.out.println("Successfully connected to " +
"MySQL server using TCP/IP...");
} finally {
if(con != null)
con.close();
}
}
}
Spielzeug Verbindungsklasse Ausgabe
Hinweis: Dies ist der gleiche Fehler, den ich von Tomcat erhalte.
[email protected]:~/TestConnect# java -cp mysql-connector-java-5.1.12-bin.jar:. TestConnection
Got driver
Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 1 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:409)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1122)
at TestConnection.main(TestConnection.java:14)
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:409)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1122)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:344)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2181)
... 12 more
Caused by: java.net.ConnectException: Connection timed out
at java.net.PlainSocketImpl.socketConnect(Native Method)
... 13 more
Telnet Output
[email protected]:~/TestConnect# telnet localhost 3306
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection timed out
Dies führte mich zu der Antwort, die war, dass die Lo-Schnittstelle ausgefallen war. * Hängt Kopf in Schande *. Ein kurzes "ifconfig lo up" sortierte es. – gav