El problema se debe al hecho de que la clave externa, subj_code , es parte de una varias columnas clave principal (PK) en la tabla referenciada enrolment :
primary key (stud_id, subj_code, semester, year)
donde esta columna (subj_code ) no es el más a la izquierda .
Tabla student no tiene este problema porque su columna de clave externa stud_id es la columna más a la izquierda del PK en la tabla a la que se hace referencia.
Para resolver esto, puede crear un nuevo índice para la columna a la que se hace referencia:
ALTER TABLE enrolment ADD INDEX subj_code_idx (subj_code);
grade en la otra clave foránea.