MySQL JDBC-drivrutinen har en autoreconnect-funktion som kan vara till hjälp ibland; se "Drivrutin/datakälla Klassnamn, URL-syntax och konfigurationsegenskaper för Connector/J ", och läs varningarna.
Ett andra alternativ är att använda en JDBC-anslutningspool.
Ett tredje alternativ är att utföra en fråga för att testa att din anslutning fortfarande är vid liv i början av varje transaktion. Om anslutningen inte är aktiv, stäng den och öppna en ny anslutning. En vanlig fråga är SELECT 1
. Se även:
En enkel lösning är att ändra MySQL-konfigurationsegenskaperna för att ställa in sessionens inaktiva timeout till ett riktigt stort antal. Men:
- Detta hjälper inte om din applikation kan vara inaktiv under en riktigt lång tid.
- Om din applikation (eller någon annan applikation) läcker anslutningar, kan en ökning av inaktiv timeout innebära att förlorade anslutningar förblir öppna på obestämd tid ... vilket inte är bra för databasminneanvändning.