Maison  >  Article  >  base de données  >  Pourquoi est-ce que je reçois une NullPointerException lors de la connexion à une base de données MySQL depuis Java ?

Pourquoi est-ce que je reçois une NullPointerException lors de la connexion à une base de données MySQL depuis Java ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-16 09:00:04363parcourir

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

Dépannage de l'échec de la connexion MySQL en Java

Problème : La connexion à une base de données MySQL à partir d'un programme Java entraîne un Erreur NullPointerException lors de l'appel de DriverManager.getConnection().

Code Exemple :

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();
            }
        }
    }
}

Message d'erreur :

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)

Solution :

L'erreur NullPointerException indique un problème avec l'initialisation du pilote MySQL. La cause la plus courante est l'utilisation d'une version obsolète du pilote MySQL JDBC.

Mettez à jour le pilote MySQL JDBC :

  • Accédez à https://mvnrepository. com/artifact/mysql/mysql-connector-java
  • Téléchargez la dernière version (actuellement 8.0.12)
  • Ajoutez la dépendance correspondante au fichier pom.xml de votre projet Java :
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.12</version>
</dependency>

Correction supplémentaire (pour MySQL 8.0.1) :

Si le problème persiste, il peut être lié aux modifications introduites dans MySQL 8.0.1. Pour résoudre ce problème :

  • Mise à jour vers le pilote MySQL JDBC 5.1.41 ou version ultérieure
  • Vous pouvez également utiliser l'optimisation suivante pour MySQL 8.0.0 dans votre URL de connexion :
jdbc:mysql://localhost:3306/?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn