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.cnfbazy danych MySQL. - Uruchom to.
- Sprawdź, czy mysqld jest uruchomiony bez
--skip-networkingopcja. - 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.