2

MySQLデータベースに接続するプログラムをJavaで作成しています。最初のクラスは単一の静的メソッドを返すクラスだったのでjava.sql.Connection。デバッグして接続が機能した後、二度と触れません。そして数日前、私のプログラムがこのエラーを返していることを発見しました:

com.mysql.jdbc.CommunicationsException:
基礎となる例外による通信リンク障害

BEGIN NESTED EXCEPTION
com.mysql.jdbc.CommunicationsException

MESSAGE:
基礎となる例外による通信リンク障害:

BEGIN NESTED EXCEPTION
java.io.EOFExceptionサーバ。予想される 4 バイト、接続が予期せず失われる前に 0 を読み取りました。

スタックトレース:

...

  • MySQL Server v. 5.1.62 をインストールしました
  • MySQL/J コネクタ v. 5.0.8 (mysql.com からダウンロード) を使用しています。
  • また、NetBeans sqljdbc4.jar にクラスパスを入れました

私が理解できないのは、データベースを作成してからローカルホストでユーザー名とパスワードを変更していないという事実です。私が変更したのは、テーブルを追加し、テーブルの列を変更したことだけですが、このエラーは発生しません。そして、プロジェクトで行ったことは、文字セットを UTF-8 から UTF-16 に変更したことですが、接続方法にはほとんど影響しないと思います。

コネクタを変更してクラスパス コネクタ v. 5.1.22 を挿入すると、エラーが返されます 。ユーザー root のすべての権限を宣言しても
、ユーザー "root@localhost" (パスワードを使用: YES) のアクセスが拒否されました。

4

2 に答える 2

1

次のことをお勧めします。

  1. 最初に、2 つのサーバー間のネットワークに問題がないことを確認します。サーバーからデータベース サーバーに ping を送信します。b. MTR unix ツールを使用して、2 つのサーバー間の接続を確保します。
  2. 接続プールを使用していますか? はいの場合は、サーバーを再起動してみてください。おそらく、接続プール内の接続のうち、クローズ状態にあるものはほとんどありません。

まず、最初の問題を解決しましょう。その他の問題 ユーザー「root@localhost」のアクセス拒否 (パスワードを使用: YES) は独立した問題であり、後で説明します。

于 2013-01-09T15:35:01.973 に答える
0

Win7マシンを使用していることを忘れました。返信ありがとうございます。プールにさらに多くの接続を設定しましたが、機能しませんでした(アプリケーションが起動し、プールが15を受け入れる場合、データベースへの接続は約10あります)。
しかし!!
プロジェクトのエンコーディングをUTF-8(最初から持っていた)からUnicodeに変更したことを忘れませんでした(JOptionPane.showMessageDialog();ネイティブのアルファベットなので、Windowsで東ヨーロッパのアルファベットを使用したかったため)。テストのために、文字セットをUTF-8に戻しましたが、接続は再び機能しています。正直なところ…わかりません。

于 2013-01-15T09:15:22.040 に答える