Java Database Connectivity (JDBC) je Java API, které vám umožňuje přistupovat a spouštět dotazy a příkazy v databázi.
Tento článek popisuje některé kroky k odstraňování problémů s com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
chyba, ke které dochází při pokusu o připojení k databázi pomocí JDBC.
Communications link failure
dojde k chybě, když databáze není dostupná. Níže jsou uvedeny možné příčiny a jejich řešení:
IP adresa nebo název hostitele v JDBC URL je špatně.
Pomocí ping
ověřte a otestujte, zda název hostitele nebo adresa IP může odpovědět .
Místní server DNS nerozpozná název hostitele v adrese URL JDBC
Obnovte DNS nebo použijte IP adresu v JDBC URL místo toho.
Číslo portu v JDBC URL chybí nebo je nesprávné
Ověřte, zda je IP adresa správně nakonfigurována v databázi MySQL® my.cnf soubor pomocí vašeho oblíbeného textového editoru.
Chcete-li najít my.cnf soubor, spusťte následující příkaz pro kontrolu nastavení MySQL:
mysql --help | grep "Default options" -A 1
Pokud soubor stále nemůžete najít, zkuste spustit následující příkaz:
find / -name my.cnf
Můžete se také podívat do výchozích umístění:
- /etc/my.cnf
- /etc/mysql/my.cnf
- /usr/etc/my.cnf
- ~/.my.cnf
Databázový server nepřijímá připojení TCP/IP
Ověřte, že mysqld
služba běží. Chcete-li ověřit stav mysqld
spusťte následující příkazy podle vaší distribuce Linuxu:
Pro CentOS® 6 nebo Red Hat® Enterprise Linux® (RHEL) 6:
service mariadb status
Pro CentOS 7+ nebo RHEL 7+:
systemctl status mariadb.service
Pro operační systém Ubuntu®:
/etc/init.d/mysql status
Databáze nefunguje nebo je vypnutá
Spusťte následující příkaz pro spuštění databáze MySQL:
Pro CentOS 6 / RHEL 6:
service mariadb start
Pro CentOS 7+ / RHEL 7+:
systemctl start mariadb.service
Pro operační systém Ubuntu:
/etc/init.d/mysql start
Databázovému serveru došla připojení
Restartujte databázi a zjistěte, zda váš kód nemá problém při uzavírání připojení.
Propojení mezi Javou a DB blokuje komunikaci
Vypněte bránu firewall nebo proxy. Případně je nakonfigurujte tak, aby povolily nebo přeposílaly port. Pokud používáte CentOS 6/RHEL 6, přečtěte si článek iptables.