sql >> Databáze >  >> RDS >> PostgreSQL

Při volání DB::vyberte, proč se mi zobrazuje zpráva Připojení bylo resetováno?

Záludnou částí toho bylo tvrdošíjné odmítání prohlížeče odhalit jakoukoli formu chybové zprávy. Když se to stane, rád přejdu na příkazový řádek a vyzkouším to, čímž vyloučím webový server jako proměnnou.

Z chatu jsme se dozvěděli, že příkazový řádek zobrazil chybu podle očekávání, ale neudělal to elegantně:chyba byla vypsána a skript byl zastaven. To je těžké selhání, které nelze připsat webovému serveru.

Se zavedením \Throwable , scénářů, kdy PHP tvrdě umírá, je stále méně a dále. Takže ve snaze zachytit umírající dech PHP jsme implementovali funkci register_shutdown_function který vytáhl error_get_last ve snaze zjistit, co, pokud vůbec něco, bylo řečeno těsně před výbuchem.

To krátce odhalilo chybovou zprávu v prohlížeči (tentokrát pomocí jiného prohlížeče). To však nebylo opakovatelné. Názor v tomto bodě byl ukládání do mezipaměti:composer dump-autoload problém vyřešen!

Mám podezření, že se stalo toto:

  • Eloquent vyvolal výjimku
  • PHP to probublávalo prostřednictvím Laravelových tříd zpracování výjimek
  • V určitém okamžiku se PHP pokusilo načíst třídu, která nebyla v autoloaderu
  • PHP těžce havarovalo (toto je jeden z případů, kdy PHP 7.0 kauci)

Spuštěním composer dump-autoload , všechny „chybějící“ třídy byly přeneseny do působnosti automatického zavaděče a při opětovném pokusu došlo ke správné sekvenci kódu.



  1. SQL Network Interfaces, chyba:50 - Došlo k chybě za běhu místní databáze. Nelze vytvořit automatickou instanci

  2. Jak převést případ řetězce v PostgreSQL

  3. Chyba SQL:1054, SQLState:42S22 Neznámý sloupec v 'seznamu polí' chyba Java Spring Boot Chyba Mysql

  4. Návrh databáze:Více tabulek vs jedna tabulka