[2.1] erreur de restauration - Duplicate value...

[2.1] erreur de restauration - Duplicate value...

par Francis Feytout,
Nombre de réponses : 1

Bonjour,

J'obtiens la trace ci-dessous à la restauration d'un cours (qui ne contient pas de donnée utilisateur), la sauvegarde m'a servi à dupliquer le cours.

J'ai le mode full debug activité (plateforme de test oblige), le cours créé est accessible et à l'air de fonctionner, par contre je m'inquiète car la semaine dernière, j'ai perdu un cours à la suite d'une corruption inconnue dont la trace était équivalente.

Je peux bien sur fournir l'archive à la demande.

Merci

---
Did you remember to make the first column something unique in your call to get_records? Duplicate value '21' found in column 'contextid'.
  • line 804 of /lib/dml/mysqli_native_moodle_database.php: call to debugging()
  • line 576 of /backup/util/dbops/restore_dbops.class.php: call to mysqli_native_moodle_database->get_records_sql()
  • line 384 of /backup/util/dbops/restore_dbops.class.php: call to restore_dbops::restore_find_best_target_context()
  • line 301 of /backup/util/dbops/restore_dbops.class.php: call to restore_dbops::prechek_precheck_qbanks_by_level()
  • line 135 of /backup/util/helper/restore_prechecks_helper.class.php: call to restore_dbops::precheck_categories_and_questions()
  • line 325 of /backup/controller/restore_controller.class.php: call to restore_prechecks_helper::execute_prechecks()
  • line 638 of /backup/util/ui/restore_ui_stage.class.php: call to restore_controller->execute_precheck()
  • line 251 of /backup/util/ui/restore_ui.class.php: call to restore_ui_stage_process->process()
  • line 44 of /backup/restore.php: call to restore_ui->requires_substage()
Did you remember to make the first column something unique in your call to get_records? Duplicate value '21' found in column 'contextid'.
  • line 804 of /lib/dml/mysqli_native_moodle_database.php: call to debugging()
  • line 576 of /backup/util/dbops/restore_dbops.class.php: call to mysqli_native_moodle_database->get_records_sql()
  • line 384 of /backup/util/dbops/restore_dbops.class.php: call to restore_dbops::restore_find_best_target_context()
  • line 301 of /backup/util/dbops/restore_dbops.class.php: call to restore_dbops::prechek_precheck_qbanks_by_level()
  • line 1195 of /backup/util/dbops/restore_dbops.class.php: call to restore_dbops::precheck_categories_and_questions()
  • line 981 of /backup/moodle2/restore_stepslib.php: call to restore_dbops::process_categories_and_questions()
  • line 34 of /backup/util/plan/restore_execution_step.class.php: call to restore_process_categories_and_questions->define_execution()
  • line 153 of /backup/util/plan/base_task.class.php: call to restore_execution_step->execute()
  • line 148 of /backup/util/plan/base_plan.class.php: call to base_task->execute()
  • line 157 of /backup/util/plan/restore_plan.class.php: call to base_plan->execute()
  • line 302 of /backup/controller/restore_controller.class.php: call to restore_plan->execute()
  • line 144 of /backup/util/ui/restore_ui.class.php: call to restore_controller->execute_plan()
  • line 45 of /backup/restore.php: call to restore_ui->execute()
Moyenne des évaluations  -
En réponse à Francis Feytout

Re: [2.1] erreur de restauration - Duplicate value...

par Patrick Lemaire,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Bonjour,

Bien loin d'être spécialiste en 2.1, j'avancerai que tu as 2 'contextid' identique (le 21, probablement un context de cours) dans la base ce qui pose un problème...

Je suggèrerai de faire le ménage dans la table mdl_context.
MAIS AVANT : Fais une sauvegarde de la base MySQL.

Ensuite, tu peux essayer un :

CHECK table mdl_context;

suivi d'un :

OPTIMIZE table mdl_context;

depuis un accès MySQL. Peut-être qu'un REPAIR sera nécessaire...

N'as-tu pas, à un moment, sauvagement supprimer des choses directement dans la base de données sans passer par les API Moodle ? Cela pourrait expliquer le "morceau qui traine"...

A bientôt,
Patrick