Fehler bei getConnection zu MySQL Datenbank

Hallo zusammen, ich bin hier neu.
Ich habe meinen PC auf Windows10 upgedated und auch die neuesten Versionen von MySQL (8.0.17), JDK (1.8. 0_221) und Netbeans (11.0) installiert. Die Datenbank läuft, ich kann mit LibreOffice über ODBC darauf zugreifen. Beim Verbindungsaufbau mit JAVA (mysqlconnector 8.0.17) kommt ein Fehler.

Das ist mein Code , der unter Windows 7, MySQL 5, JDK 1.7.0_7 funktioniert hat:

Java:
public static void start() {

        String dbname = "jdbc:mysql://127.0.0.1:3306/dia?useUnicode=yes&characterEncoding=UTF-8";
        String user = "xxxxxxxx";
        String pw = "yyyyyyyy";
        try {                                              // Treiber laden
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            System.err.println(" Kann Treiber nicht laden: " + e);
        }
        try {
            conDia = DriverManager.getConnection(dbname, user, pw);
        } catch (SQLException e) {
             System.err.println("DB-Fehler bei getConnection: " + e.getMessage() );
              e.printStackTrace();
        }
Ich krieg jetzt folgende Fehlermeldung:

DB-Fehler bei getConnection: Unexpected exception encountered during query.
java.sql.SQLException: Unexpected exception encountered during query.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2664)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2568)
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1557)
at com.mysql.jdbc.ConnectionImpl.loadServerVariables(ConnectionImpl.java:3868)
at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3407)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2384)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at dia.DbDia.start(DbDia.java:40)
at dia.Dia.main(Dia.java:15)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 255
at com.mysql.jdbc.ConnectionImpl.getServerCharacterEncoding(ConnectionImpl.java:3100)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2107)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2618)
... 19 more


Wenn ich einen falschen Datenbankname angebe, kommt: Unknown database

Bei falschem Passwort kommt: Access denied
Bei falschem Usernamen kommt: Client does not support authentication protocol requested by server; consider upgrading MySQL client

Es scheint also eine Verbindung zur Datenbank zu geben, aber ich bin jetzt mit meinem Latein am Ende.
Vielleicht kann mir jemand helfen

ps: Ich bin nicht so der Java-Freak, ich beschäftige mich erst seit der Rente mit Java, vorher habe ich jahrzentelang in anderen Sprachen programmiert.
 
Probier mal jdbc:mysql://127.0.0.1:3306/dia?characterEncoding=UTF-8 - ich kann useUnicode nicht in der Doku zu Connector/J finden, vielleicht ist das das Problem.
 
Ah, sorry, ich sehe jetzt erst:

Probier mal jdbc:mysql://127.0.0.1:3306/dia?characterEncoding=utf8mb4, wenn das immer noch nicht funktioniert, dann einfach mal jdbc:mysql://127.0.0.1:3306/dia.
Bei der 1. Version ändert sicht nicht, bei der 2. kommjetzt ein anderer Fehler;
Unknown initial character set index '255' received from server. Initial client character set can be forced via the 'characterEncoding' property.
 
Schau mal in Deiner my.cnf nach, was dort für character_set_server eingetragen ist. Alternativ kannst Du noch latin1 statt utf8mb4 probieren.
 
Ja, unter Windows heißt das Teil wahrscheinlich my.ini :)

Verbind Dich mal per mysql mit Deiner DB und ruf mal auf:

SHOW VARIABLES LIKE 'character_set_server';
 
Hast Du den Treiber von der Seite runtergeladen, oder über den Windows-Installer?

Ist "dia" eine hochgezogene DB oder eine neu erstellte? Falls hochgezogen: kannst Du mal gegen die DB "mysql" verbinden? "jdbc:mysql://127.0.0.1:3306/mysql" nur am um zu sehen, ob das funktioniert.
 
was verstehst du unter hochgezogene DB? Ich habe die DB vor ca 9 Jahren unter MySQL 4 war das glabe ich erstellt. Die verbindung zu msql bringt denselben Fehler
 
Den Treiber habe ich mit dem MySQL Installer installiert, ich habe auch schon die ältere Version 8.0.11 probiert ohne Erfolg
 
Ich habe die DB vor ca 9 Jahren unter MySQL 4 war das glabe ich erstellt. Die verbindung zu msql bringt denselben Fehler
Ja, das meinte ich mit hochziehen. Die Verbindung zu mysql sollte aber unabhängig davon funktionieren.

Um es kurz zu machen: ich habe keinen Schimmer, was jetzt noch falsch laufen kann.

Einen Versuch der Verzweiflung hätte ich noch: lad Dir mal von https://dev.mysql.com/downloads/connector/j/ den Treiber nochmal runter, nimm aber "Platform Independent" und binde das Jar aus dem Paket in Dein Projekt ein.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben