Detta är ett inslaget undantag och inte riktigt intressant. Det är grundorsaken av undantaget som faktiskt säger oss något om grundorsaken. Vänligen titta lite längre i stacktrace. Chansen är stor att du då kommer att möta en SQLException: Connection refused
eller SQLException: Connection timed out
.
Om detta är sant i ditt fall också, är alla möjliga orsaker:
- IP-adress eller värdnamn i JDBC URL är fel.
- Värdnamn i JDBC URL känns inte igen av den lokala DNS-servern.
- Portnummer saknas eller är fel i JDBC URL.
- DB-servern är nere.
- DB-servern accepterar inte TCP/IP-anslutningar.
- Något mellan Java och DB blockerar anslutningar, t.ex. en brandvägg eller proxy.
För att lösa det ena eller det ena, följ följande råd:
- Verifiera och testa dem med
ping
. - Uppdatera DNS eller använd IP-adressen i JDBC URL istället.
- Verifiera det baserat på
my.cnf
av MySQL DB. - Starta det.
- Verifiera om mysqld startas utan
--skip-networking
alternativ. - Inaktivera brandvägg och/eller konfigurera brandvägg/proxy för att tillåta/vidarebefordra porten.
Förresten (och utan samband med det faktiska problemet), behöver du inte nödvändigtvis ladda JDBC-drivrutinen på varje getConnection()
ringa upp. Bara en gång under uppstart räcker.