MySQL Workbench 8.0 をインストールし、Connector/J バージョン 5.1.39 を介して Netbeans 経由でデータベースに接続しようとしています。
これは、私の Windows Surface で問題なく動作するセットアップです。自宅の PC でセットアップを複製しようとしていますが、問題が発生しています。
コード:
String driver = "jdbc:mysql:";
String hostAndPort = "//localhost:3306/";
String database = "bills";
String options = "?autoReconnect=true&useSSL=false";
final String userName = "root";
final String password = "pass";
String url = driver + hostAndPort + database + options;
try(Connection con = DriverManager.getConnection(url, userName, password);
Statement st = con.createStatement())
{
// Do nothing so far
} catch (SQLException ex) {
System.out.println("SQLException:\t" + ex.getMessage());
System.out.println("SQLState:\t" + ex.getSQLState());
System.out.println("VendorError:\t" + ex.getErrorCode());
}
アプリケーションを実行しようとすると、例外がキャッチされて出力されます。
SQLException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
SQLState: 08001
VendorError: 0
言及する価値があるのは、はい、データベースの「請求書」が存在し、ユーザーとパスワードが正しいことです。それらを使用して MySQL Workbench に入り、請求書データベースを編集できます。
私が試したこと:
- Connector/J ディレクトリ パスをクラス パスに追加しました。
- Connector/J jar ファイルをプロジェクトに直接追加しました。
- 「MySQL JDBC Driver」ライブラリをプロジェクトに追加しました。
- データベースが「標準 (TCP/IP)」接続方法でポート 3306 を使用するように設定されていることを確認しました。(ユーザー root の「アカウント制限」もありません)
- Windows Defender ファイアウォールが MySQL をブロックしていないことを確認しました。(他のファイアウォールはありません)
- MySQL サービスが実行されていることを確認しました
繰り返しますが、このセットアップは私の Surface で問題なく動作します。Connector/J の新しいバージョンを試してみましたが、MySQL Workbench v. 8 との互換性の問題が発生したため、Surface で動作する (Connector/J の) v. 5.1.39 を使用することにしました。
何が起こっているかについて手がかりを得ているように感じる唯一の場所は、自宅の PC のポート アクティビティをチェックして、それを私のサーフェスのアクティビティと比較するときです。
データベースへの接続試行中にポートを観察すると、次のようになります。
ホーム PC でポート接続が確立されないのはなぜですか? これが問題の原因ですか?どうすれば修正できますか?
これが問題の原因でない場合、接続できないのはなぜですか?