sql >> Databasteknik >  >> RDS >> PostgreSQL

När jag ringer DB::select varför får jag meddelandet Anslutningen återställdes?

Den knepiga delen av detta har varit webbläsarens envisa vägran att avslöja någon form av felmeddelande. När det händer gillar jag att gå till kommandoraden och prova det, vilket eliminerar webbservern som en variabel.

Från chatten fick vi veta att kommandoraden visade felet som förväntat, men gjorde det inte på ett elegant sätt:felet matades ut och skriptet stoppades. Det är en hård krasch, en som inte kan tillskrivas webbservern.

Med introduktionen av \Throwable , de scenarier där PHP dör hårt blir färre och längre mellan. Så, i ett försök att fånga PHPs döende andetag, implementerade vi en register_shutdown_function som drog error_get_last i ett försök att ta reda på vad, om något, som sades precis innan sprängningen.

Detta avslöjade kortfattat felmeddelandet i webbläsaren (den här gången med en annan webbläsare). Detta kunde dock inte upprepas. Insikten vid denna tidpunkt cachelagrade:composer dump-autoload löste problemet!

Jag misstänker att det som hände är detta:

  • Eloquent gjorde ett undantag
  • PHP bubblade upp det genom Laravels undantagshanteringsklasser
  • Vid något tillfälle försökte PHP ladda en klass som inte fanns i autoloader
  • PHP kraschade hårt (detta är ett av de fall där PHP 7.0 löser ut)

Genom att köra composer dump-autoload , alla "saknade" klasser fördes in i autoloaderns område och, när försöket igen, hände den korrekta kodsekvensen.



  1. GROUP BY i UPDATE FROM-satsen

  2. SQL tidsskillnad mellan två datum resulterar i hh:mm:ss

  3. Varför kan NULL inte konverteras till JSONs null i postgreSQL?

  4. alternativ MySQL-kod för INET6_ATON