Skip to main content

[BUG-002] Error Fatal: Attempt to assign property "sortorder" on null (Moodle Gradebook) bugs (Bug Tracker)

PreguntasPágina: clave[BUG-002] Error 500: Exception - Attempt to assign property "sortorder" on null

Estado: 🟢 Corregido (EstructuraHotfix aplicado)

Severidad: Crítica (P0/P1) - Bloquea la visualización del  libro de calificaciones. 
Módulo: Moodle Core / Gradebook (Libro de Calificaciones)

 

🔍 Descripción

Se reportó un error que impedía el acceso a secciones del curso tras eliminar una categoría en el libro de calificaciones. El sistema intentaba asignar un orden de prioridad (sortorder) a un objeto que ya no existía en la base de datos, resultando en el mensaje: Exception - Attempt to assign property "sortorder" on null.

👣 Pasos para Reproducir (Origen)

  1. Acceder a la configuración del Libro de Calificaciones.

  2. Eliminar una Categoría de calificación existente.

  3. El sistema no elimina correctamente la referencia en la tabla de ítems, dejando un registro "huérfano".

  4. Intentar cargar la página de calificaciones del curso backend/frontend

🛠️ Datos Técnicos

  • Error: Attempt to assign property "sortorder" on null

  • Causa: Un ítem en mdl_grade_items de tipo category apuntaba a un iteminstance que ya no existía en mdl_grade_categories.

  • ID de Curso afectado: 204.

✅ Resolución (Hotfix de Base de Datos)

Para corregir la inconsistencia de datos, se siguieron estos pasos:

1. Localización del registro huérfano: Se ejecutó el siguiente SQL para encontrar ítems de categoría que no tienen una categoría real asociada:

SQL
SELECT id, courseid, itemname, itemtype, categoryid, iteminstance
FROM mdl_grade_items 
WHERE itemtype = 'category' 
AND iteminstance NOT IN (SELECT id FROM mdl_grade_categories);

Resultado: Se identificó el ID 5,467 como el registro conflictivo.

2. Acción correctiva: Se procedió a eliminar manualmente el registro huérfano de la página):

  1. ¿Qué está pasando exactamente? (Título descriptivo).
  2. ¿Cómo lo replico paso a paso? (La lista del 1 al 5 para llegar al error).
  3. ¿Qué debería pasar y qué está pasando en su lugar? (Contrastetabla de expectativas).
  4. ítems:

  5. SQL
    DELETE FROM mdl_grade_items WHERE id = 5467;
    

    ¿EnPrevención qué entorno sucede?futura: (Producción,Si Staging,este Navegador,error IDes recurrente, se debe revisar si hay algún plugin de usuario).

  6. terceros
  7. ¿Hayinterfiriendo evidenciacon visualel borrado estándar de Moodle o técnica?ejecutar (Screenshots,un logsscript de consolalimpieza ode enlacesbase ade Sentry)datos (admin/cli/check_database_schema.php).