sql >> Database teknologi >  >> RDS >> PostgreSQL

Når du kalder DB::select, hvorfor får jeg en meddelelse om Forbindelsen blev nulstillet?

Den vanskelige del af dette har været browserens stædige afvisning af at afsløre nogen form for fejlmeddelelse. Når det sker, kan jeg godt lide at gå til kommandolinjen og prøve det, og dermed eliminere webserveren som en variabel.

Fra chat lærte vi, at kommandolinjen viste fejlen som forventet, men gjorde det ikke elegant:fejlen blev udskrevet, og scriptet blev stoppet. Det er et hårdt nedbrud, som ikke kan tilskrives webserveren.

Med introduktionen af ​​\Throwable , de scenarier, hvor PHP dør hårdt, bliver færre og længere imellem. Så i et forsøg på at fange PHP's døende åndedræt implementerede vi en register_shutdown_function der trak error_get_last i et forsøg på at finde ud af, hvad der om noget blev sagt lige før sprængningen.

Dette afslørede kort fejlmeddelelsen i browseren (denne gang med en anden browser). Dette kunne dog ikke gentages. Indsigten på dette tidspunkt cachelagde:composer dump-autoload løst problemet!

Jeg formoder, at det, der skete, er dette:

  • Eloquent kastede en undtagelse
  • PHP boblede det op gennem Laravels undtagelseshåndteringsklasser
  • På et tidspunkt forsøgte PHP at indlæse en klasse, der ikke var i autoloaderen
  • PHP styrtede hårdt ned (dette er et af de tilfælde, hvor PHP 7.0 bails)

Ved at køre composer dump-autoload , alle de "manglende" klasser blev bragt ind i autoloaderens område, og da det blev prøvet igen, skete den korrekte kodesekvens.



  1. Opbevar multidimensional array i databasen:relationel eller multidimensional?

  2. Postgres-fejl under opdatering af kolonnedata

  3. Udenlandske nøgler i Laravel 4-migreringsproblemet

  4. Laravel 5.4 Kombinerer to kollektioner