sql >> Databasteknik >  >> RDS >> Mysql

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:Kommunikationslänk misslyckades

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:

  1. IP-adress eller värdnamn i JDBC URL är fel.
  2. Värdnamn i JDBC URL känns inte igen av den lokala DNS-servern.
  3. Portnummer saknas eller är fel i JDBC URL.
  4. DB-servern är nere.
  5. DB-servern accepterar inte TCP/IP-anslutningar.
  6. 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:

  1. Verifiera och testa dem med ping .
  2. Uppdatera DNS eller använd IP-adressen i JDBC URL istället.
  3. Verifiera det baserat på my.cnf av MySQL DB.
  4. Starta det.
  5. Verifiera om mysqld startas utan --skip-networking alternativ.
  6. 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.



  1. Använda Jenkins med Kubernetes AWS, del 2

  2. MS Access anropar SQL Server lagrad procedur

  3. Hämta Oracle-tabelltyp från lagrad procedur med JDBC

  4. oracle 12c - välj sträng efter senaste förekomsten av ett tecken