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

Hvorfor får jeg MySQL-serveren forsvundet undtagelse i Django?

Jeg havde præcis det samme problem som dit. Jeg implementerede et overvågningsscript ved hjælp af watchdogs-biblioteket, og ved slutningen af ​​"wait_timeout" ville MySQL-fejlen blive rejst.

Efter et par forsøg med "django.db.close_old_connections()"-funktionen virkede det stadig ikke, men jeg forsøgte at lukke gamle forbindelser for hvert defineret tidsinterval, hvilket ikke virkede. Jeg ændrede lukkekommandoen til kun at køre før kaldet af min brugerdefinerede administrationskommando (som er den kommando, der vil interagere med db og bruges til at gå ned med MySQL-fejl), og den begyndte at virke.

Tilsyneladende fra denne side , grunden til at det sker, er fordi funktionen "close_old_connection" kun er knyttet til HTTP-anmodningssignaler, så den vil ikke blive udløst i specifikke brugerdefinerede scripts. Dokumentationen af ​​Django fortæller det ikke, og jeg forstod ærligt talt også tingene på samme måde, som du forstod.

Så hvad du kan prøve at gøre er at tilføje opkaldet for at lukke den gamle forbindelse, før du interagerer med db:

from django.db import close_old_connections
close_old_connections()
do_something_with_db()


  1. mysql server 8.0 nøglering migreringsfejl ved login

  2. En introduktion til asynkron behandling med Service Broker

  3. Visning af data i en RecyclerView

  4. Sådan kontrollerer du, om der findes en lagret procedure, før du opretter den