Java Database Connectivity (JDBC) est l'API Java qui vous permet d'accéder et d'exécuter des requêtes et des commandes sur une base de données.
Cet article décrit quelques étapes pour dépanner l'exception com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
erreur, qui se produit lorsque vous essayez de vous connecter à une base de données à l'aide de JDBC.
L'Communications link failure
L'erreur se produit lorsque la base de données est inaccessible. Voici les causes possibles et leurs solutions :
L'adresse IP ou le nom d'hôte dans URL JDBC est faux.
Vérifiez et testez que le nom d'hôte ou l'adresse IP peut répondre en utilisant ping
.
Le serveur DNS local ne reconnaît pas le nom d'hôte dans l'URL JDBC
Actualisez votre DNS ou utilisez l'adresse IP dans URL JDBC à la place.
Le numéro de port est manquant ou incorrect dans URL JDBC
Vérifiez que l'IP est bien configurée dans la base de données MySQL® my.cnf fichier en utilisant votre éditeur de texte préféré.
Pour trouver le mon.cnf fichier, exécutez la commande suivante pour vérifier vos paramètres MySQL :
mysql --help | grep "Default options" -A 1
Si vous ne trouvez toujours pas le fichier, essayez d'exécuter la commande suivante :
find / -name my.cnf
Vous pouvez également rechercher dans les emplacements par défaut :
- /etc/mon.cnf
- /etc/mysql/my.cnf
- /usr/etc/my.cnf
- ~/.my.cnf
Le serveur de base de données n'accepte pas les connexions TCP/IP
Vérifiez que le mysqld
le service est en cours d'exécution. Pour vérifier le statut de mysqld
service, exécutez les commandes suivantes en fonction de votre distribution Linux® :
Pour CentOS® 6 ou Red Hat® Enterprise Linux® (RHEL) 6 :
service mariadb status
Pour CentOS 7+ ou RHEL 7+ :
systemctl status mariadb.service
Pour le système d'exploitation Ubuntu® :
/etc/init.d/mysql status
La base de données est arrêtée ou éteinte
Exécutez la commande suivante pour démarrer la base de données MySQL :
Pour CentOS 6/RHEL 6 :
service mariadb start
Pour CentOS 7+ / RHEL 7+ :
systemctl start mariadb.service
Pour le système d'exploitation Ubuntu :
/etc/init.d/mysql start
Le serveur de base de données n'a plus de connexions
Redémarrez la base de données et voyez si votre code rencontre un problème lors de la fermeture des connexions.
Les connexions entre Java et DB bloquent la communication
Désactivez le pare-feu ou le proxy. Sinon, configurez-les pour autoriser ou transférer le port. Si vous utilisez CentOS 6/RHEL 6, consultez l'article iptables.