Když jsem to hodil do směsi možných příčin, narazil jsem na to, když sloupec referenční tabulky měl stejný "typ", ale neměl stejné podepsání.
V mém případě byl sloupec odkazované tabulky TINYINT UNSIGNED a můj sloupec odkazující tabulky byl TINYINT SIGNED. Zarovnáním obou sloupců se problém vyřešil.