sql >> Database teknologi >  >> RDS >> Mysql

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:Ingen handlinger tilladt efter forbindelsen er lukket

Som @swanliu påpegede, skyldes det en dårlig forbindelse.
Men før jeg justerer servertimingen og klienttimeout, ville jeg først prøve at bruge en bedre forbindelsespoolingstrategi.

Forbindelsespooling

Hibernate indrømmer selv, at dets forbindelsespoolingstrategi er minimal

Jeg bruger personligt C3P0 . der er dog andre tilgængelige alternativer inklusive DBCP .
Tjek ud

Nedenfor er en minimal konfiguration af C3P0 brugt i min applikation:

<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="c3p0.acquire_increment">1</property> 
<property name="c3p0.idle_test_period">100</property> <!-- seconds --> 
<property name="c3p0.max_size">100</property> 
<property name="c3p0.max_statements">0</property> 
<property name="c3p0.min_size">10</property> 
<property name="c3p0.timeout">1800</property> <!-- seconds --> 

Rediger:
Jeg opdaterede konfigurationsfilen (Reference ), da jeg lige havde kopieret indsat den til mit projekt tidligere. Timeoutet burde ideelt set løse problemet. Hvis det ikke virker for dig, er der en dyr løsning som jeg synes du kunne se på:

Opret en fil "c3p0.properties", som skal være i roden af ​​klassestien (dvs. ingen måde at tilsidesætte den for bestemte dele af applikationen). (Reference )

# c3p0.properties
c3p0.testConnectionOnCheckout=true

Med denne konfiguration testes hver forbindelse, før den tages i brug. Det kan dog påvirke webstedets ydeevne.



  1. org.postgresql.util.PSQLEundtagelse:FATAL:beklager, for mange klienter allerede

  2. Hvordan kan jeg fejlsøge, hvorfor den enkleste MySQL-forespørgsel returnerer falsk?

  3. Sådan udføres opdateringsoperationer på kolonner af typen JSONB i Postgres 9.4

  4. Oprettelse og implementering af flere versioner af databasen gennem skemasnapshots