sql >> Databasteknik >  >> RDS >> Mysql

Kunde inte öppna JPA EntityManager för transaktion; kapslat undantag är javax.persistence.PersistenceException

Det finns CommunicationsException:Kommunikationslänkfel.

Om du får ett SQLException:Connection refused eller Connection timeout eller en MySQL-specifik

CommunicationsException: Communications link failure

då betyder det att DB inte är nåbar alls. Detta kan ha en eller flera av följande 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.
  • DB-servern har slut på 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 andra, 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 i MySQL DB.
  • Starta DB.
  • Verifiera om mysqld har startat utan alternativet --skip-nätverk.
  • Starta om DB och fixa din kod så att den äntligen stänger anslutningarna.
  • Inaktivera brandvägg och/eller konfigurera brandvägg/proxy för att tillåta/vidarebefordra porten.

Källa:Mer information



  1. MySQL:Hur lägger man till en kolumn om den inte redan finns?

  2. MySQL till outfiles

  3. Använd SparkSession.sql() med JDBC

  4. fråga mysql-databas inifrån en klass