To zawinięty wyjątek i niezbyt interesujący. Jest to pierwotna przyczyna wyjątku, który faktycznie mówi nam coś o pierwotnej przyczynie. Proszę spojrzeć nieco dalej w stacktrace. Istnieje duża szansa, że napotkasz wtedy SQLException: Connection refused
lub SQLException: Connection timed out
.
Jeśli tak jest również w Twoim przypadku, wszystkie możliwe przyczyny to:
- 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.
- Coś pomiędzy Javą a DB blokuje połączenia, np. zapora lub serwer proxy.
Aby rozwiązać jeden lub jeden z nich, 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 to.
- Sprawdź, czy mysqld jest uruchomiony bez
--skip-networking
opcja. - Wyłącz zaporę i/lub skonfiguruj zaporę/proxy, aby zezwolić/przekierować port.
Nawiasem mówiąc (i bez związku z rzeczywistym problemem), niekoniecznie musisz ładować sterownik JDBC na każdym getConnection()
połączenie. Wystarczy tylko raz podczas uruchamiania.