Olá! Tive o mesmo problema e resolvi excluindo as linhas órfãs na tabela mdl_grade_grades:
select * from mdl_grade_grades where itemid not in (select id from mdl_grade_items)
e depois
DELETE from mdl_grade_grades where itemid not in (select id from mdl_grade_items
Veja mais detalhes da solução aqui