首页 >数据库 >mysql教程 >为什么从 Java 连接到 MySQL 数据库时会收到 NullPointerException?

为什么从 Java 连接到 MySQL 数据库时会收到 NullPointerException?

Susan Sarandon
Susan Sarandon原创
2024-11-16 09:00:04445浏览

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

在 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 驱动程序:

  • 导航到 https://mvnrepository。 com/artifact/mysql/mysql-connector-java
  • 下载最新版本(目前为8.0.12)
  • 将相应的依赖添加到您的Java项目的pom.xml文件中:
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.12</version>
</dependency>

其他修复(适用于 MySQL 8.0.1):

如果问题仍然存在,则可能与 MySQL 8.0.1 中引入的更改有关。要解决此问题:

  • 更新到 MySQL JDBC 驱动程序 5.1.41 或更高版本
  • 或者,您可以在连接 URL 中对 MySQL 8.0.0 使用以下优化:
jdbc:mysql://localhost:3306/?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC

以上是为什么从 Java 连接到 MySQL 数据库时会收到 NullPointerException?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn