Come indica la documentazione MySQL su chiavi straniere :
Quindi, se usi innodb, MySQL non ti consente di creare una chiave esterna su un campo che non è il campo più a sinistra in un indice.
Il motivo è che in un indice a più colonne non è possibile cercare un valore in base a un campo che non è il più a sinistra, quindi l'indice non può essere utilizzato per cercare rapidamente il valore per un controllo di chiave esterna.
Questo comportamento degli indici MySQL è descritto nella documentazione MySQL su indici a più colonne :