在 Java 中排除 MySQL 连接失败
问题:从 Java 程序连接到 MySQL 数据库会导致调用 DriverManager.getConnection() 时出现 NullPointerException 错误。
代码示例:
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(); } } } }
错误消息:
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)
解决方案:
NullPointerException 错误表示 MySQL 驱动程序初始化出现问题。最常见的原因是使用过时版本的 MySQL JDBC 驱动程序。
更新 MySQL JDBC 驱动程序:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.12</version> </dependency>
其他修复(适用于 MySQL 8.0.1):
如果问题仍然存在,则可能与 MySQL 8.0.1 中引入的更改有关。要解决此问题:
jdbc:mysql://localhost:3306/?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
以上是为什么从 Java 连接到 MySQL 数据库时会收到 NullPointerException?的详细内容。更多信息请关注PHP中文网其他相关文章!