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:
<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:
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!