[solved] Verbindungsproblem via jdbc zu mysql

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
mmax
Beiträge: 69
Registriert: 02.04.2008 08:06:46

[solved] Verbindungsproblem via jdbc zu mysql

Beitrag von mmax » 09.02.2010 19:28:58

Hallo,

Ich kämpfe schon seit ein paar Tagen mit dem Problem dass ich via Java keine Verbindung zu meiner lokalen mysql-Datenbank bekomme. Zuerst mal ein paar Infos zu den installierten Paketen:
> dpkg-query -W --showformat='${Status} ${Version}\t${Package}\n' | grep "^install ok" | grep -e "mysql" -e "java"
install ok installed 0.34 java-common
install ok installed 7 javascript-common
install ok installed 4.012-1+b1 libdbd-mysql-perl
install ok installed 5.1.10+dfsg-2 libmysql-java
install ok installed 5.1.41-3 libmysqlclient16
install ok installed 5.1.41-3 mysql-client
install ok installed 5.1.41-3 mysql-client-5.1
install ok installed 5.1.41-3 mysql-common
install ok installed 5.1.41-3 mysql-server
install ok installed 5.1.41-3 mysql-server-5.1
install ok installed 1:3.1.1-8 openoffice.org-java-common
install ok installed 5.2.11.dfsg.1-2 php5-mysql
install ok installed 6-16-1 sun-java6-bin
install ok installed 6-16-1 sun-java6-jdk
install ok installed 6-16-1 sun-java6-jre
install ok installed 6-16-1 sun-java6-plugin
Dann hab ich ein kleines Java-Testprogramm gescheiben um mich mit der DB zu verbinden, der code sieht folgendermaßen aus:

Code: Alles auswählen

import java.sql.*;

public class DBDemo
{
    public static void main(String[] args) throws
	ClassNotFoundException,SQLException
    {
	// Class.forName(xxx) loads the jdbc classes and
	// creates a drivermanager class factory
	Class.forName("com.mysql.jdbc.Driver");

	// Now try to connect
	Connection c = DriverManager.getConnection("jdbc:mysql://localhost:3306/DBNAME",
						   "USER","PASSWORD");
	
	System.out.println("It works !");
	c.close();
    }
}
Wobei DBNAME, USER und PASSWORD dementsprechenden ersetzt wird.
Für $CLASSPATH ist ":/usr/share/java/mysql.jar" gesetzt. Wenn ich jetzt mein kleines Programm übersetze ("> javac DBDemo.java") und danach ausführe ("> java DBDemo") bekomm ich folgende Meldungen:
Exception in thread "main" 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:1074)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2214)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:781)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
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.ConnectionImpl.getInstance(ConnectionImpl.java:352)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:284)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at DBDemo.main(DBDemo.java:13)
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:1074)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:343)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2140)
... 12 more
Caused by: java.net.SocketException: Network is unreachable
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.<init>(Socket.java:372)
at java.net.Socket.<init>(Socket.java:215)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:254)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:292)
... 13 more
Danach kann man zwar im Netz suchen, findet aber zu viel und nichts Vernüftiges ... bzw nichts was mir geholfen hat wie z.B. localhost durch 127.0.0.1 ersetzen usw. Die Verbindung zur DB via mysqlclient und php funktioniert mit der selben USER/PASSWORD/DBNAME Kombination. Kann mir da jemand helfen? Benötige ich noch zusätzliche Pakete, sind da vielleicht inkopatible Pakete installiert oder stimmt mein Javacode nicht? Bin für jede Hilfe dankbar.

lg Max
Zuletzt geändert von mmax am 09.02.2010 22:02:46, insgesamt 1-mal geändert.

vader
Beiträge: 13
Registriert: 22.03.2005 14:05:13

Re: Verbindungsproblem via jdbc zu mysql

Beitrag von vader » 09.02.2010 20:17:18

Hallo,
hast du schon einen Connector eingebuden ?
hier findest du was du suchst:

http://dev.mysql.com/downloads/connector/j/

die jar datei in die libraries importieren und fertig.

Gruß
Sebastian

mmax
Beiträge: 69
Registriert: 02.04.2008 08:06:46

Re: Verbindungsproblem via jdbc zu mysql

Beitrag von mmax » 09.02.2010 21:09:06

eigentlich dachte ich dass den Connector das debianpaket libmysql-java beinhaltet, aber ich werds mal mit dem von mysql versuchen.

mmax
Beiträge: 69
Registriert: 02.04.2008 08:06:46

Re: Verbindungsproblem via jdbc zu mysql

Beitrag von mmax » 09.02.2010 21:27:19

ok, hab ich gemacht und hab jetzt das neue java archiv (mysql-connector-java-5.1.11-bin.jar) im /usr/share/java ordner und den link neu gesetzt, sieht jetzt so aus:

Code: Alles auswählen

-rw-r--r-- 1 root root   5333 30. Aug 19:41 gettext.jar
-rw-r--r-- 1 root root   2620 30. Aug 19:41 libintl.jar
lrwxrwxrwx 1 root root     31  4. Feb 12:00 mysql-5.1.10.jar -> mysql-connector-java-5.1.10.jar
-rw-r--r-- 1 root root 756460  5. Okt 20:20 mysql-connector-java-5.1.10.jar
-rw-r--r-- 1 root root 732657  9. Feb 21:19 mysql-connector-java-5.1.11-bin.jar
lrwxrwxrwx 1 root root     35  9. Feb 21:20 mysql-connector-java.jar -> mysql-connector-java-5.1.11-bin.jar
lrwxrwxrwx 1 root root     16  4. Feb 12:00 mysql.jar -> mysql-5.1.10.jar
drwxr-xr-x 2 root root   4096  4. Dez 17:05 openoffice
$CLASSPATH hab ich auf ":/usr/share/java/mysql.jar:/usr/share/java/mysql-connector-java.jar" gesetzt. Hab auch andere Varianten getestet aber leider noch immer das gleiche Problem.

klinux
Beiträge: 49
Registriert: 20.07.2005 13:02:14

Re: Verbindungsproblem via jdbc zu mysql

Beitrag von klinux » 09.02.2010 21:56:00

Hallo,

ich hatte vor ein paar Wochen mit einem ähnlichen Problem zu kämpfen, mit Debian testing (Squeeze). Später habe ich gemerkt, dass alle Java-Applikationen Probleme mit dem Netzwerk haben. Dies lag an der Einstellung in /etc/sysctl.d/bindv6only.conf, hier war bei mir net.ipv6.bindv6only = 1 gesetzt und Java hat das so interpretiert, dass es nur noch versucht hat über IPv6 zu kommunizieren. Hier half eine 0 anstatt der 1. Wobei das erst nach einem Neustart zieht. Wenn Du das direkt testen willst, hilft ein

Code: Alles auswählen

sudo sysctl net.ipv6.bindv6only=0
Siehe dazu auch http://debianforum.de/forum/viewtopic.p ... bindv6only.

Viele Grüße

mmax
Beiträge: 69
Registriert: 02.04.2008 08:06:46

[solved] Re: Verbindungsproblem via jdbc zu mysql

Beitrag von mmax » 09.02.2010 22:02:20

Yeahhh .... das wars!
Komisch das ich das noch nirgends gefunden hab.

Herzlichen Dank,
Max

Antworten