Bonjour à tous,
Je tourne actuellement sur Moodle 4.5.2 avec PHP 8.2. Je suis hébergé chez O2Switch.
En consultant mes tâches programmées, je me suis rendu compte que la tâche "Traitement en tâche de fond du module devoir" était en erreur.
Il semblerait, si j'ai bien compris, que le problème vienne d'éléments d'anciens cours qui resteraient dans la BDD alors que les cours en eux-mêmes sont supprimés.
J'ai d'abord eu ce message d'erreur lors du lancement du cron :
Scheduled task failed: Traitement en tâche de fond du module devoir (mod_assign\task\cron_task),Impossible de trouver l’enregistrement de données dans la table context de la base de données. (SELECT * FROM {context} WHERE id = ?
[array (
0 => '8237',
)])
Debug info:
SELECT * FROM {context} WHERE id = ?
[array (
0 => '8237',
)]
J'ai donc recherché l'ID 8237 dans la table mdl_context. Cet élément n'existait plus. J'ai essayé de le reconstituer sans succès. J'ai donc supprimé dans la BDD les éléments en lien avec celui-ci.
Une fois ce problème résolu, en lançant à nouveau le cron, je suis tombé sur l'erreur suivante :
Scheduled task failed: Traitement en tâche de fond du module devoir (mod_assign\task\cron_task),Impossible de trouver l’enregistrement de données dans la table course de la base de données. (SELECT id,category FROM {course} WHERE id = ? [array ( 0 => '1066', )]) Debug info: SELECT id,category FROM {course} WHERE id = ? [array ( 0 => '1066', )]
Le cours 1066 n'existant plus, j'ai supprimé les différents éléments du cours 1066 que j'ai trouvés dans ma BDD, mais je suis tombé sur une autre erreur :
Scheduled task failed: Traitement en tâche de fond du module devoir (mod_assign\task\cron_task),Impossible de trouver l’enregistrement de données dans la base de données. (SELECT cm.*, m.name, md.name AS modname
FROM {course_modules} cm
JOIN {modules} md ON md.id = cm.module
JOIN {assign} m ON m.id = cm.instance
WHERE m.id = :instance AND md.name = :modulename
[array (
'instance' => '476',
'modulename' => 'assign',
)])
Debug info:
SELECT cm.*, m.name, md.name AS modname
FROM {course_modules} cm
JOIN {modules} md ON md.id = cm.module
JOIN {assign} m ON m.id = cm.instance
WHERE m.id = :instance AND md.name = :modulename
[array (
'instance' => '476',
'modulename' => 'assign',
)]
Puis sur celle-ci :
Scheduled task failed: Traitement en tâche de fond du module devoir (mod_assign\task\cron_task),Impossible de trouver l’enregistrement de données dans la base de données. (SELECT cm.*, m.name, md.name AS modname
FROM {course_modules} cm
JOIN {modules} md ON md.id = cm.module
JOIN {assign} m ON m.id = cm.instance
WHERE m.id = :instance AND md.name = :modulename
[array (
'instance' => '478',
'modulename' => 'assign',
)])
Debug info:
SELECT cm.*, m.name, md.name AS modname
FROM {course_modules} cm
JOIN {modules} md ON md.id = cm.module
JOIN {assign} m ON m.id = cm.instance
WHERE m.id = :instance AND md.name = :modulename
[array (
'instance' => '478',
'modulename' => 'assign',
)]
Puis celle-là :
Scheduled task failed: Traitement en tâche de fond du module devoir (mod_assign\task\cron_task),Impossible de trouver l’enregistrement de données dans la table context de la base de données. (SELECT * FROM {context} WHERE id = ?
[array (
0 => '8859',
)])
Debug info:
SELECT * FROM {context} WHERE id = ?
[array (
0 => '8859',
)]
Puis celle-ci :
Scheduled task failed: Traitement en tâche de fond du module devoir (mod_assign\task\cron_task),Impossible de trouver l’enregistrement de données dans la table course de la base de données. (SELECT id,category FROM {course} WHERE id = ?
[array (
0 => '1075',
)])
Debug info:
SELECT id,category FROM {course} WHERE id = ?
[array (
0 => '1075',
)]
Puis celle-ci :
Scheduled task failed: Traitement en tâche de fond du module devoir (mod_assign\task\cron_task),Impossible de trouver l’enregistrement de données dans la base de données. (SELECT cm.*, m.name, md.name AS modname
FROM {course_modules} cm
JOIN {modules} md ON md.id = cm.module
JOIN {assign} m ON m.id = cm.instance
WHERE m.id = :instance AND md.name = :modulename
[array (
'instance' => '860',
'modulename' => 'assign',
)])
Debug info:
SELECT cm.*, m.name, md.name AS modname
FROM {course_modules} cm
JOIN {modules} md ON md.id = cm.module
JOIN {assign} m ON m.id = cm.instance
WHERE m.id = :instance AND md.name = :modulename
[array (
'instance' => '860',
'modulename' => 'assign',
)]
Bref, quelqu'un aurait-il une requête "magique" à lancer pour supprimer tous les éléments restants d'anciens cours et qui perturbent le lancement des crons ?
Merci d'avance aux experts des BDD.
Jean-Gabriel