Keine Verbindung mit JDBC zu Mysql
*Markus
- java
Hallo,
weder mit Spring, noch auf konventionellem Weg schaffe ich es, mit JDBC zu meiner lokalen MySQL-Datenbank eine Verbindung herzustellen. Ich habe schon verschiedene Treiberversionen benutzt o.ä. aber ohne Erfolg.
Hier der Testcode:
public class MysqlConnector {
public static void main(String args[]){
try {
Statement stmt;
ResultSet rs;
//Register the JDBC driver for MySQL.
Class.forName("com.mysql.jdbc.Driver");
//Define URL of database server for
String url = "jdbc:mysql://localhost:3306/test";
// String url
Connection con = DriverManager.getConnection(url, "root", "testpwd");
// Connection con = DriverManager.getConnection(url);
//Display URL and connection information
System.out.println("URL: " + url);
System.out.println("Connection: " + con);
//Get a Statement object
stmt = con.createStatement();
rs = stmt.executeQuery("SELECT testfeld FROM Preis");
while (rs.next()) {
System.out.println(rs.getString(1));
}
con.close();
}catch( Exception e ) {
e.printStackTrace();
}
}
}
Hier die Fehlerausgabe:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
Last packet sent to the server was 0 ms ago.
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:2103)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:718)
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:302)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at MysqlConnector.main(MysqlConnector.java:20)
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
Last packet sent to the server was 0 ms ago.
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.readPacket(MysqlIO.java:666)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1069)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2031)
... 12 more
Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2431)
at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:590)
... 14 more
Ihr seid meine letzte Hoffung. Ich habe gestern den ganzen Abend damit verbracht eine Lösung zu finden, nur dieses Problem haben offensichtlich viele, aber ich fand keine Lösungen dazu.
Eine Verbindung zu MySQL ist möglich:
markus@arch $ telnet localhost 3306
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
ODBC brauche ich nicht, da ich auf Linux arbeite, wie man sieht.
Markus
Übrigens, der Treiber ist natürlich im CLASSPATH. (sogar im eigenen ext-Verzeichnis von Java)
Übrigens, der Treiber ist natürlich im CLASSPATH. (sogar im eigenen ext-Verzeichnis von Java)
»»
hallo,
//Register the JDBC driver for MySQL.
Class.forName("com.mysql.jdbc.Driver").newInstance();
sollte es dann schon sein, denn ohne newInstance() hast du kein Objekt auf das du zugreifen kannst.
siehe http://dev.mysql.com/doc/refman/5.1/de/connector-j.html
mfg
Hallo mysch.
Class.forName("com.mysql.jdbc.Driver").newInstance();
sollte es dann schon sein, denn ohne newInstance() hast du kein Objekt auf das du zugreifen kannst.
Das brauchts nicht, siehe die Java-API : »A call to forName("X") causes the class named X to be initialized.«
Servus,
Flo
Hallo,
Das brauchts nicht
Stimmt. Mir wurde auch empfohlen es nicht zu verwenden. Wie auch immer, es funktioniert mit Instanz auch nicht.
Markus
Hallo Markus,
markus@arch $ telnet localhost 3306
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.ODBC brauche ich nicht, da ich auf Linux arbeite, wie man sieht.
woran sollte man das sehen?
prompt vinzenz@work $$
und telnet gibt es auch unter Windows :-)
(Von MacOS, diversen BSD-Derivaten und sonstigen *ixen ganz zu schweigen)
Freundliche Grüße
Vinzenz