Java から MySQL データベースに接続すると NullPointerException が発生するのはなぜですか?

Susan Sarandon
リリース: 2024-11-16 09:00:04
オリジナル
361 人が閲覧しました

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

Java での MySQL 接続エラーのトラブルシューティング

問題: Java プログラムから MySQL データベースに接続すると、呼び出し時の NullPointerException エラーDriverManager.getConnection().

コード例:

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 Driver 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート