sql >> Databáze >  >> RDS >> Mysql

Proč dostávám výjimku, že server MySQL zmizel v Django?

Měl jsem úplně stejný problém jako ty. Implementoval jsem monitorovací skript pomocí knihovny watchdogs a na konci "wait_timeout" by se objevila chyba MySQL.

Po několika pokusech s funkcí "django.db.close_old_connections()" to stále nefungovalo, ale pokoušel jsem se uzavřít stará připojení v každém definovaném časovém intervalu, což nefungovalo. Změnil jsem příkaz close tak, aby se spouštěl pouze před voláním mého vlastního příkazu pro správu (což je příkaz, který bude interagovat s db a používá se ke zhroucení s chybou MySQL) a začalo to fungovat.

Zřejmě z této stránky , důvodem, proč k tomu dochází, je to, že funkce "close_old_connection" je propojena pouze se signály požadavků HTTP, takže nebude spuštěna v konkrétních vlastních skriptech. Dokumentace Djanga to neříká a upřímně jsem také pochopil věci stejným způsobem, jakým jste rozuměli vy.

Takže, co můžete zkusit udělat, je přidat volání k ukončení starého připojení před interakcí s db:

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


  1. MySQL – Zlepšete výkon aktualizačních dotazů pro složité výpočty

  2. Vytvořte novou tabulku výběrem dat z jiných tabulek pomocí CREATE TABLE AS

  3. Přirozené řazení podporující velká čísla

  4. Jak nainstalovat SQL Server na Red Hat 8