Como solucionar erro de duplicação de nota: Encontrado mais de um registro no fetch() !

Como solucionar erro de duplicação de nota: Encontrado mais de um registro no fetch() !

por Lino Vaz Moniz -
Número de respostas: 0

Quando esse erro ocorre:

Encontrado mais de um registro no fetch() !

 

Rastreamento de pilha: 

  • line 163 of /lib/grade/grade_object.php: moodle_exception thrown

  • line 367 of /lib/grade/grade_item.php: call to grade_object::fetch_helper()

  • line 1200 of /lib/grade/grade_item.php: call to grade_item::fetch()

  • line 447 of /lib/gradelib.php: call to grade_item::fetch_course_item()

  • line 127 of /mod/quiz/view.php: call to grade_get_grades()

Os comandos SQL  a seguir ajudam mapear a situação

Mapear cursos com duplicação de itens de avaliação referente a nota final

SELECT i.courseid,c.fullname,count(i.itemtype) as duplicateitem FROM mdl_grade_items i INNER JOIN mdl_course c ON c.id=i.courseid WHERE i.itemtype='course' GROUP BY i.courseid,c.fullname HAVING count(i.itemtype) > 1


Mapear a duplicação do itens de avaliação final em um curso

SELECT * FROM mdl_grade_items WHERE itemtype='course' AND courseid=?

Se o resultado desse comando trazer mais de um registro, como sinaliza o print a seguir, é sinal que há problema e que um registro precisa ser removido


Mapear categoria de itens de avaliação

SELECT * FROM mdl_grade_categories WHERE courseid=?

O resultado dessa consulta mostra que há mis de uma raiz da categoria de nota no curso. Isso é sinal de problema. Deve existir uma única raiz,  esta deve ser veiculada no item de avaliação da nota final no campo iteminstance.

No print apresentado, o registro destacado em verde é o raiz original. Esta deve ser vinculada ao item de avaliação final. O destacado em laranja é a duplicação que deve ser removida.