Mysql
 sql >> Base de données >  >> RDS >> Mysql

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException :Échec du lien de communication

C'est une exception enveloppée et pas vraiment intéressante. C'est la cause profonde de l'exception qui nous dit en fait quelque chose sur la cause première. Veuillez regarder un peu plus loin dans le stacktrace. Il y a de fortes chances que vous fassiez alors face à une SQLException: Connection refused ou SQLException: Connection timed out .

Si cela est également vrai dans votre cas, alors toutes les causes possibles sont :

  1. L'adresse IP ou le nom d'hôte dans l'URL JDBC est incorrect.
  2. Le nom d'hôte dans l'URL JDBC n'est pas reconnu par le serveur DNS local.
  3. Le numéro de port est manquant ou erroné dans l'URL JDBC.
  4. Le serveur de base de données est en panne.
  5. Le serveur de base de données n'accepte pas les connexions TCP/IP.
  6. Quelque chose entre Java et DB bloque les connexions, par ex. un pare-feu ou un proxy.

Pour résoudre l'un ou l'autre, suivez les conseils suivants :

  1. Vérifiez et testez-les avec ping .
  2. Actualisez le DNS ou utilisez plutôt l'adresse IP dans l'URL JDBC.
  3. Vérifiez-le en fonction de my.cnf de la base de données MySQL.
  4. Démarrez-le.
  5. Vérifiez si mysqld est démarré sans le --skip-networking option.
  6. Désactivez le pare-feu et/ou configurez le pare-feu/proxy pour autoriser/transférer le port.

Au fait (et sans rapport avec le problème réel), vous n'avez pas nécessairement besoin de charger le pilote JDBC sur chaque getConnection() appel. Une seule fois au démarrage suffit.