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