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 ドライバーを更新します:
<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 中国語 Web サイトの他の関連記事を参照してください。