Me encontré con este mismo problema con HeidiSQL. El error que recibe es muy críptico. Mi problema terminó siendo que la columna de clave externa y la columna de referencia no eran del mismo tipo o longitud.
La columna de clave externa era SMALLINT(5) UNSIGNED
y la columna a la que se hace referencia era INT(10) UNSIGNED
. Una vez que los hice exactamente del mismo tipo, la creación de la clave foránea funcionó perfectamente.