2010-01-20 2 views
5

ich Probleme habe versucht, eine Datenbankverbindung bekommen Sie den Code unten verwenden:Kann nicht zu MySQL machen JDBC-Verbindung (mit Java, IntelliJ und Linux)

try { 
     Class.forName("com.mysql.jdbc.Driver"); 
     Properties p = new Properties(); 
     p.put("user", user_name); 
     p.put("password", password); 
     connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1/jsp_test", p); 
    } catch (SQLException ex) { 
     // handle any errors 
     ex.printStackTrace(); 
     System.out.println("SQLException: " + ex.getMessage()); 
     System.out.println("SQLState: " + ex.getSQLState()); 
     System.out.println("VendorError: " + ex.getErrorCode()); 
     return false; 
    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } 

Die Fehlermeldung, die ausgegeben wird, ist:

/usr/lib/jvm/java-6-openjdk/bin/java -Didea.launcher.port=7532 -Didea.launcher.bin.path=/usr/bin/idea/bin -Dfile.encoding=UTF-8 -classpath /usr/lib/jvm/java-6-openjdk/jre/lib/jce.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/about.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/resources.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/management-agent.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/jsse.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/charsets.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/ext/localedata.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/ext/sunjce_provider.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/ext/sunpkcs11.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/ext/dnsns.jar:/home/bedtimes/Java Projects/db_demo/out/production/db_demo:/opt/java/jre/lib/ext/mysql-connector-java-5.1.10-bin.jar:/usr/bin/idea/lib/idea_rt.jar com.intellij.rt.execution.application.AppMain 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:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:532) 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.(ConnectionImpl.java:781) at com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:46) 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) 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:620) at java.sql.DriverManager.getConnection(DriverManager.java:169) at database.Database.connect(Database.java:80) at Main.main(Main.java:13) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:616) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:110) 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:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:532) at com.mysql.jdbc.Util.handleNewInstance(Util.java:406) at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074) at com.mysql.jdbc.MysqlIO.(MysqlIO.java:343) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2137) ... 18 more Caused by: java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:310) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:176) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:163) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:384) at java.net.Socket.connect(Socket.java:542) at java.net.Socket.connect(Socket.java:492) at java.net.Socket.(Socket.java:389) at java.net.Socket.(Socket.java:232) at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:253) at com.mysql.jdbc.MysqlIO.(MysqlIO.java:292) ... 19 more SQLException: 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. SQLState: 08S01 VendorError: 0

Process finished with exit code 0

Ich habe buchstäblich keine Ahnung, wie Sie diese Fehlermeldung beheben können. Die Datenbank existiert. Der Benutzername und das Passwort sind vorhanden. Ich habe zur Zeit keine Tabellen zur Datenbank hinzugefügt, aber ich denke nicht, dass das das Problem sein kann, da ich nur eine Verbindung herstelle ...

Ich kann zusätzliche Informationen liefern, wenn es sein muss. Ich habe das Gefühl, ich habe viel ausprobiert. Kennt jemand irgendwelche Möglichkeiten, weitere Informationen darüber zu erhalten, wie und warum es scheitert?

Danke für Ihre Hilfe! :)

+0

Können Sie direkt (mit mysql-Client) verbinden? Das einzige nützliche Bit des Traceback ist '08S01' und die mysql-Dokumentation erwähnt etwas darüber (http://dev.mysql.com/doc/refman/5.0/en/connector-j-usagenotes-troubleshooting.html#qandaitem- 20-3-5-3-1-3). – shylent

+0

Haben Sie versucht, die URL "jdbc: mysql: // localhost/jsp_test" zu verwenden? Meistens nur eine zufällige Fehlersuche. –

+0

Ich kann mich direkt mit mysql client und meinem Benutzernamen 'jsp_test' verbinden. Ich kann immer noch keine Verbindung herstellen, wenn ich 127.0.0.1 zu localhost ändere. Danke für den Link, ich werde einen Blick darauf werfen. Ich frage mich, ob jemand anderes versuchen kann, das gleiche mit ihrem eigenen Rechner und mysql-connector-java-5.1.10-bin.jar – olive

Antwort

6

Von Ihrer Verbindungszeichenfolge sollte diese Datenbank auf dem lokalen Computer sein. Können Sie versuchen, diesen Befehl auszuführen, um sicherzustellen, dass der Socket für Verbindungen geöffnet ist?

telnet 127.0.0.1 3306

und sicherstellen, dass es eine Verbindung? Möglicherweise haben Sie Ihre mysql-Instanz nicht so konfiguriert, dass sie auf Verbindungen von diesem System oder dieser Schnittstellenadresse wartet. Wenn die Verbindung fehlschlägt, müssen Sie Ihre MySQL-Konfiguration ändern, zum Beispiel:

http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html

+0

[Bedtime @ Seb ~] $ Telnet 127.0.0.1 3306 versuchen 127.0.0.1. .. telnet: Verbindung zum Remote-Host nicht möglich: Verbindung verweigert ... Sieht aus, als ob Sie Recht haben könnten!Ich werde diese Anleitung ausprobieren und dann zu Ihnen zurückkommen, wenn das Problem behoben ist. C: – olive

+1

Ich bekomme jetzt: [bedtimes @ seb /] $ telnet localhost 3306 Probieren 127.0.0.1 ... Verbunden mit localhost. Escape-Zeichen ist '^]'. Verbindung vom fremden Host geschlossen. ... Weiß jemand was das bedeutet? – olive

+0

Endgültige Lösung wurde durch Ändern von hosts.allow wie auf dieser Seite angegeben: http://bbs.archlinux.org/viewtopic.php?pid=346836#p346836 Gesamt-PITA. Vielen Dank! C: – olive

1

ich die gleichen Symptome hatten, aber für mich die Lösung der bind-Adresse 0.0.0.0 in/etc zu ändern war/mysql/my.cnf

(Just dies für andere veröffentlichen eine Antwort auf diese Frage sucht)

+0

Ich lösche vollständig die Bind-Adresszeile und es hat das gleiche Problem für mich behoben. – jgritty

1

du stattdessen versuchen:

connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/jsp_test","user_name","password"); 
1

yo u kann eine der folgenden versuchen

"jdbc:mysql://localhost:3306/jsp_test","username","password" 

oder

"jdbc:mysql://'your machines ip (without quote)':3306/jsp_test","username","password" 

oder

"jdbc:mysql://127.0.0.1:3306/jsp_test","username","password" 

als Verbindungszeichenfolge.

Verwandte Themen