O problema se deve ao fato de que a chave estrangeira,
subj_code , faz parte de um multicoluna chave primária (PK) na tabela referenciada enrolment :primary key (stud_id, subj_code, semester, year)
onde esta coluna (
subj_code ) não é o mais à esquerda . Tabela
student não tem esse problema porque sua coluna de chave estrangeira stud_id é a coluna mais à esquerda do PK na tabela referenciada. Para resolver isso, você pode criar um novo índice para a coluna referenciada:
ALTER TABLE enrolment ADD INDEX subj_code_idx (subj_code);
Observação: Você tem que fazer o mesmo para a tabela referenciada
grade na outra chave estrangeira. Demonstração aqui