Więc masz
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:Awaria łącza komunikacyjnego
java.net.ConnectException:Połączenie odrzucone
Cytuję z tej odpowiedzi który zawiera również samouczek MySQL+JDBC krok po kroku:
Jeśli otrzymasz SQLException: Connection refused
lub Connection timed out
lub specyficzny dla MySQL CommunicationsException:
Communications link failure
, oznacza to, że baza danych jest w ogóle nieosiągalna. Może to mieć jedną lub więcej z następujących przyczyn:
- Adres IP lub nazwa hosta w adresie URL JDBC jest nieprawidłowy.
- Nazwa hosta w adresie URL JDBC nie jest rozpoznawana przez lokalny serwer DNS.
- Brak numeru portu lub jest on nieprawidłowy w adresie URL JDBC.
- Serwer DB nie działa.
- Serwer DB nie akceptuje połączeń TCP/IP.
- Na serwerze DB zabrakło połączeń.
- Coś pomiędzy Javą a DB blokuje połączenia, np. zapora lub serwer proxy.
Aby rozwiązać jedno lub drugie, postępuj zgodnie z następującymi wskazówkami:
- Zweryfikuj i przetestuj je za pomocą
ping
. - Odśwież DNS lub użyj adresu IP w adresie URL JDBC.
- Zweryfikuj go na podstawie
my.cnf
bazy danych MySQL. - Uruchom DB.
- Sprawdź, czy mysqld jest uruchomiony bez opcji
--skip-networking option
. - Zrestartuj bazę danych i odpowiednio popraw swój kod, aby zamykał połączenia w
finally
. - Wyłącz zaporę i/lub skonfiguruj zaporę/proxy, aby umożliwić/przekazać port.
Zobacz też:
- Jak mam połączyć się z bazą danych/źródłem danych JDBC w aplikacji opartej na serwlecie?
- Czy używanie statycznej instancji java.sql.Connection w systemie wielowątkowym jest bezpieczne?