0

Javaプログラムをサーバーに接続しようとすると、次の例外が発生します。

CommunicationsException: Communications link failure 
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

だから私はこれらの指示を見つけました:

SQLException:接続が拒否されたか、接続がタイムアウトしたか、MySQL固有のCommunicationsException:通信リンク障害が発生した場合は、DBにまったく到達できないことを意味します。これには、次の1つ以上の原因が考えられます。

  1. JDBCURLのIPアドレスまたはホスト名が間違っています。
  2. JDBC URLのホスト名は、ローカルDNSサーバーによって認識されません。
  3. JDBC URLにポート番号がないか、間違っています。
  4. DBサーバーがダウンしています。
  5. DBサーバーはTCP/IP接続を受け入れません。
  6. DBサーバーの接続が不足しています。
  7. JavaとDBの間の何かが、ファイアウォールやプロキシなどの接続をブロックしています。

どちらか一方を解決するには、次のアドバイスに従ってください。

  1. pingを使用してそれらを確認およびテストします。
  2. DNSを更新するか、代わりにJDBCURLのIPアドレスを使用してください。
  3. MySQLDBのmy.cnfに基づいて確認します。
  4. DBを起動します。
  5. --skip-networkingオプションを指定せずにmysqldが起動されているかどうかを確認します。
  6. DBを再起動し、それに応じてコードを修正して、最終的に接続を閉じます。
  7. ファイアウォールを無効にするか、ファイアウォール/プロキシを構成してポートを許可/転送します。

この回答から。

すべてのオプションを試しましたが、「my.ini」構成ファイルでポート番号(オプション3)を確認する方法がわかりません。さらに、services.mscリストに「MySQL」のサービスがないことがわかりましたが、ポート3306が使用されていることがわかりました。それは問題に関連していますか?そして、「my.ini」構成ファイルはどのように見えるべきですか?MySQLWorkbench5.2.47を使用しています。(MySQLサーバーのバージョンは5.6です)。

私の接続コード:

    private MySQLConnectivity() { 

try { Class.forName("com.mysql.jdbc.Driver"); Connect(); 
} catch (ClassNotFoundException e) 
{ // TODO Auto-generated catch block e.printStackTrace(); } 
} 
public void Connect() { try { MySQLConnectivity.Conn = (Connection)DriverManager.getConnection(URL, USER, PASS);
 } catch (SQLException e) 
{ // TODO Auto-generated catch block e.printStackTrace(); 
} finally { }
4

1 に答える 1