You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
MySQL pustí do sloupce typu `json` zanoření do 100 úrovní a hlubší dokument
odmítne chybou 3157 (The JSON document exceeds the maximum depth). PHP proti
tomu parsuje do 512, takže tělo mezi těmito limity projde celou aplikací
a rozbije se až při insertu do `request_log_body`.
Následek byl horší, než vypadá: `request_log` s metadaty se zapsal (jde
o samostatný insert před tělem), ale celý obsah requestu i odpovědi se
ztratil a v logu zůstalo jen „RequestLogger selhal". Kdo o tom ví, umí si
tak zařídit, že obsah jeho požadavku v logu nebude - stačí do platného těla
přidat dostatečně zanořené pole.
Hloubka se proto hlídá spolu s validitou: co se do `json` sloupce nevejde,
uloží se jako text do `raw_data_text`, respektive `response_text`. Horší na
dotazování, ale je to pořád celý obsah.
`params` ani `headers` to neřeší schválně - $_GET je omezený direktivou
max_input_nesting_level (výchozích 64) a hlavičky jsou ploché, takže se přes
100 úrovní nedostanou.
Nahlášeno z produkčního API: SQLSTATE[22032] 3157 na POST /v1/orders.