Dus je hebt een
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:communicatielink mislukt
java.net.ConnectException:verbinding geweigerd
Ik citeer uit dit antwoord die ook een stapsgewijze MySQL+JDBC-zelfstudie bevat:
Als u een SQLException: Connection refused
. krijgt of Connection timed out
of een MySQL-specifieke CommunicationsException:
Communications link failure
, dan betekent dit dat de DB helemaal niet bereikbaar is. Dit kan een of meer van de volgende oorzaken hebben:
- IP-adres of hostnaam in JDBC-URL is verkeerd.
- Hostnaam in JDBC-URL wordt niet herkend door lokale DNS-server.
- Poortnummer ontbreekt of is verkeerd in JDBC-URL.
- DB-server is uitgevallen.
- DB-server accepteert geen TCP/IP-verbindingen.
- DB-server heeft geen verbindingen meer.
- Iets tussen Java en DB blokkeert verbindingen, b.v. een firewall of proxy.
Volg de volgende adviezen om het een of het ander op te lossen:
- Verifieer en test ze met
ping
. - Vernieuw DNS of gebruik in plaats daarvan het IP-adres in de JDBC-URL.
- Verifieer het op basis van
my.cnf
van MySQL DB. - Start de database.
- Controleer of mysqld is gestart zonder de optie
--skip-networking option
. - Start de database opnieuw op en corrigeer uw code dienovereenkomstig zodat de verbindingen in
finally
. worden gesloten . - Schakel firewall uit en/of configureer firewall/proxy om de poort toe te staan/door te sturen.
Zie ook:
- Hoe moet ik verbinding maken met de JDBC-database / gegevensbron in een op servlet gebaseerde toepassing?
- Is het veilig om een statische java.sql.Connection-instantie te gebruiken in een multithreaded systeem?