sql >> Databasteknik >  >> RDS >> Mysql

Paket ur funktion fel vid anrop av MySQL lagrad proc

Efter att ha tillbringat många timmar med att försöka isolera delar av min kod för att lösa detta problem, märkte jag att felet försvann efter att ha ställt in ATTR_EMULATE_PREPARES-flaggan till true.

$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);

Detta säger till PDO att emulera de förberedda uttalandena istället för inbyggt av MySQL. Från vad jag har läst, rekommenderas det generellt att stänga av denna flagga (det är sant som standard) om du använder den senaste versionen av MySQL och PHP. Du kan hitta mer information om det i denna SO-artikel .

Jag tror att detta är en bugg med MySQL (jag hade problemet fram till version 5.6.17). Det finns inte mycket diskussion om just detta problem så förhoppningsvis sparar detta någon annan timmars felsökning. Problemet diskuteras också på denna MySQL-felsida , men den postade lösningen hjälpte mig inte i min situation.



  1. PostgreSQL Upsert särskilj infogade och uppdaterade rader med hjälp av systemkolumnerna XMIN, XMAX och andra

  2. flera värden infogning av kryssrutan endast sista värdet tar i databasen

  3. Konvertera från datum till epok-Oracle

  4. Analysera JSON i TSQL