Mysql
 sql >> Database >  >> RDS >> Mysql

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:collegamento di comunicazione non riuscito

Questa è un'eccezione avvolta e non molto interessante. È la causa principale dell'eccezione che in realtà ci dice qualcosa sulla causa principale. Si prega di guardare un po' più in là nello stacktrace. È molto probabile che tu debba quindi affrontare una SQLException: Connection refused o SQLException: Connection timed out .

Se questo è vero anche nel tuo caso, allora tutte le possibili cause sono:

  1. L'indirizzo IP o il nome host nell'URL JDBC è errato.
  2. Il nome host nell'URL JDBC non è riconosciuto dal server DNS locale.
  3. Numero di porta mancante o errato nell'URL JDBC.
  4. Il server DB è inattivo.
  5. Il server DB non accetta connessioni TCP/IP.
  6. Qualcosa tra Java e DB sta bloccando le connessioni, ad es. un firewall o un proxy.

Per risolvere l'uno o l'altro, segui i seguenti consigli:

  1. Verificali e testali con ping .
  2. Aggiorna il DNS o utilizza invece l'indirizzo IP nell'URL JDBC.
  3. Verificalo in base a my.cnf di MySQL DB.
  4. Inizialo.
  5. Verifica se mysqld è stato avviato senza il --skip-networking opzione.
  6. Disabilita il firewall e/o configura il firewall/proxy per consentire/inoltrare la porta.

A proposito (e non correlato al problema reale), non è necessario caricare il driver JDBC su ogni getConnection() chiamata. È sufficiente una sola volta durante l'avvio.