Ese error puede producirse en ciertas circunstancias, sa saber:
1) Se intenta apuntar campo que será FK a un campo que no es PK en la tabla referida.
2) Las columna definidas en ambas tablas no son exactamente iguales en tipo, rango o charset.
3) La tabla donde se define la FK ya contiene datos, y
al menos uno de los registros no cumple con la restricción de FK-->PK.
El tercero es el más usual, y para resolverlo hay que verificar los datos de la tabla.
Algo como
te debería devolver registros si hay alguno que no cumpla con la condicion de FK.
Revisas si hay inconsistencias de tipo de columna es un poco más complicado. Necesitaríamos ver los CREATE TABLE, que se pueden obtener de este modo:
Eso devolverá la sentencia CREATE TABLE que crea cada una de las tablas que estás usando en el caso.