sql >> Database >  >> RDS >> PostgreSQL

Bij het aanroepen van DB::selecteer waarom krijg ik het bericht De verbinding is opnieuw ingesteld?

Het lastige hiervan was de koppige weigering van de browser om enige vorm van foutmelding te onthullen. Wanneer dat gebeurt, ga ik graag naar de opdrachtregel en probeer het, waardoor de webserver als variabele wordt geëlimineerd.

Uit chat hebben we geleerd dat de opdrachtregel de fout vertoonde zoals verwacht, maar dit niet netjes deed:de fout werd uitgevoerd en het script werd stopgezet. Dat is een harde crash, een die niet aan de webserver kan worden toegeschreven.

Met de introductie van \Throwable , worden de scenario's waarin PHP hard sterft steeds minder en verder tussen. Dus, in een poging om de laatste adem van PHP op te vangen, hebben we een register_shutdown_function geïmplementeerd dat trok error_get_last in een poging om erachter te komen wat er werd gezegd net voor het ontploffen.

Dit onthulde kort de foutmelding in de browser (dit keer met een andere browser). Dit was echter niet voor herhaling vatbaar. Het inzicht op dit punt was caching:composer dump-autoload het probleem opgelost!

Ik vermoed dat dit het volgende is:

  • Eloquent een uitzondering gegooid
  • PHP borrelde dat op via Laravel's exception handling-klassen
  • Op een gegeven moment probeerde PHP een klasse te laden die niet in de autoloader stond
  • PHP crashte hard (dit is een van die gevallen waarin PHP 7.0 vastloopt)

Door composer dump-autoload . uit te voeren , werden alle "ontbrekende" klassen in het gezichtsveld van de autoloader gebracht en, toen het opnieuw werd geprobeerd, gebeurde de juiste codereeks.



  1. Toegang wordt geweigerd bij het koppelen van een database

  2. ORA 03134-fout bij het verbinden van ODP.NET 12 (VS2012) met Oracle-database 11

  3. SQL Server AlwaysOn (Beschikbaarheidsgroep) Architectuur en stapsgewijze installatie -4 Databasestappen toevoegen en verwijderen

  4. TSQL md5-hash anders dan C# .NET md5