След като прекарах много часове, опитвайки се да изолирам части от моя код, за да разреша този проблем, забелязах, че грешката изчезна, след като зададох флага ATTR_EMULATE_PREPARES на true.
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
Това казва на PDO да емулира подготвените оператори вместо нативно от MySQL. От това, което прочетох, обикновено се препоръчва да изключите този флаг (по подразбиране е вярно), ако използвате най-актуалната версия на MySQL и PHP. Можете да намерите повече информация за това в този ТАКА статия .
Вярвам, че това е грешка с MySQL (имах проблема до версия 5.6.17). Няма много дискусии по този конкретен проблем, така че се надяваме, че това спести на някой друг часове за отстраняване на неизправности. Проблемът се обсъжда и на тази страница с грешки в MySQL , но публикуваното решение не ми помогна в моята ситуация.