Donc, vous avez un
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException :échec de la liaison de communication
java.net.ConnectException :connexion refusée
Je cite cette réponse qui contient également un didacticiel pas à pas MySQL+JDBC :
Si vous obtenez une
SQLException: Connection refused
ouConnection timed out
ou uneCommunicationsException: Communications link failure
spécifique à MySQL , cela signifie que la base de données n'est pas accessible du tout. Cela peut avoir une ou plusieurs des causes suivantes :
- L'adresse IP ou le nom d'hôte dans l'URL JDBC est incorrect.
- Le nom d'hôte dans l'URL JDBC n'est pas reconnu par le serveur DNS local.
- Le numéro de port est manquant ou erroné dans l'URL JDBC.
- Le serveur de base de données est en panne.
- Le serveur de base de données n'accepte pas les connexions TCP/IP.
- Le serveur de base de données n'a plus de connexions.
- 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 :
- Vérifiez et testez-les avec
ping
.- Actualisez le DNS ou utilisez plutôt l'adresse IP dans l'URL JDBC.
- Vérifiez-le en fonction de
my.cnf
de la base de données MySQL.- Démarrez la base de données.
- Vérifiez si mysqld est démarré sans l'option
--skip-networking option
.- Redémarrez la base de données et corrigez votre code en conséquence pour qu'il ferme les connexions dans
finally
.- Désactivez le pare-feu et/ou configurez le pare-feu/proxy pour autoriser/transférer le port.
Voir aussi :
- Comment dois-je me connecter à la base de données/source de données JDBC dans une application basée sur un servlet ?
- Est-il sûr d'utiliser une instance statique de java.sql.Connection dans un système multithread ?