Heim  >  Artikel  >  Datenbank  >  Warum erhalte ich eine NullPointerException, wenn ich von Java aus eine Verbindung zu einer MySQL-Datenbank herstelle?

Warum erhalte ich eine NullPointerException, wenn ich von Java aus eine Verbindung zu einer MySQL-Datenbank herstelle?

Susan Sarandon
Susan SarandonOriginal
2024-11-16 09:00:04364Durchsuche

Why am I getting a NullPointerException when connecting to a MySQL database from Java?

Fehlerbehebung bei MySQL-Verbindungsfehlern in Java

Problem: Das Herstellen einer Verbindung zu einer MySQL-Datenbank aus einem Java-Programm führt zu einem NullPointerException-Fehler beim Aufruf von DriverManager.getConnection().

Codebeispiel:

import java.sql.*;

public class Squirrel {
    public static void main(String[] args) {
        String user;
        String password;
        Connection connection;
        Statement statement;
        try {
            Class.forName("com.mysql.jdbc.Driver");

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

            statement = connection.createStatement();

            // Other code
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (statement != null) {
                    statement.close();
                }
                if (connection != null) {
                    connection.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

Fehlermeldung:

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
...
Caused by: java.lang.NullPointerException
    at com.mysql.jdbc.ConnectionImpl.getServerCharset(ConnectionImpl.java:2997)

Lösung:

Der NullPointerException-Fehler weist auf ein Problem mit der MySQL-Treiberinitialisierung hin. Die häufigste Ursache ist die Verwendung einer veralteten Version des MySQL-JDBC-Treibers.

Aktualisieren Sie den MySQL-JDBC-Treiber:

  • Navigieren Sie zu https://mvnrepository. com/artifact/mysql/mysql-connector-java
  • Laden Sie die neueste Version herunter (derzeit 8.0.12)
  • Fügen Sie die entsprechende Abhängigkeit zur pom.xml-Datei Ihres Java-Projekts hinzu:
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.12</version>
</dependency>

Zusätzlicher Fix (für MySQL 8.0.1):

Wenn das Problem weiterhin besteht, hängt es möglicherweise mit Änderungen zusammen, die in MySQL 8.0.1 eingeführt wurden. Um dieses Problem zu beheben:

  • Update auf MySQL JDBC-Treiber 5.1.41 oder höher
  • Alternativ können Sie die folgende Optimierung für MySQL 8.0.0 in Ihrer Verbindungs-URL verwenden:
jdbc:mysql://localhost:3306/?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC

Das obige ist der detaillierte Inhalt vonWarum erhalte ich eine NullPointerException, wenn ich von Java aus eine Verbindung zu einer MySQL-Datenbank herstelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn