Uploaded image for project: 'Moodle'
  1. Moodle
  2. MDL-30466

error while writing to database while restoring a backed up course that uses course completion

    Details

    • Database:
      MySQL
    • Testing Instructions:
      Hide
      1. Create a course with course completion tracking
      2. Create a database activity and set "Require grade" in Activity completion to "Student must receive a grade to complete this activity"
      3. Backup and try restore
      4. no error should be encountered.

      Also, run test from MDL-28116 and MDLQA-1356
      NOTE:
      Make sure to test on 20_STABLE (if integrated)

      Show
      Create a course with course completion tracking Create a database activity and set "Require grade" in Activity completion to "Student must receive a grade to complete this activity" Backup and try restore no error should be encountered. Also, run test from MDL-28116 and MDLQA-1356 NOTE: Make sure to test on 20_STABLE (if integrated)
    • Affected Branches:
      MOODLE_20_STABLE, MOODLE_21_STABLE, MOODLE_22_STABLE
    • Fixed Branches:
      MOODLE_20_STABLE, MOODLE_21_STABLE
    • Pull Master Branch:
      wip-mdl-30466

      Description

      I set up a course as per the instructions in MDLQA-1356. I had previously run an unrelated QA test testing course completion so it contained a database activity that required students to get a grade to before the activity would be marked complete. One student had completed the activity.

      I performed a full back up then restored into a new course and got the following error.

      Error writing to database

      More information about this error

      Debug info: Duplicate entry '3-8' for key 'mdl_courmoducomp_usecou_uix'
      INSERT INTO mdl_course_modules_completion (userid,completionstate,viewed,timemodified,coursemoduleid) VALUES(?,?,?,?,?)
      [array (
      0 => '3',
      1 => '1',
      2 => '0',
      3 => 1322192283,
      4 => 8,
      )]
      Stack trace:
       
          line 397 of /lib/dml/moodle_database.php: dml_write_exception thrown
          line 893 of /lib/dml/mysqli_native_moodle_database.php: call to moodle_database->query_end()
          line 935 of /lib/dml/mysqli_native_moodle_database.php: call to mysqli_native_moodle_database->insert_record_raw()
          line 2489 of /backup/moodle2/restore_stepslib.php: call to mysqli_native_moodle_database->insert_record()
          line 131 of /backup/util/plan/restore_structure_step.class.php: call to restore_userscompletion_structure_step->process_completion()
          line 103 of /backup/util/helper/restore_structure_parser_processor.class.php: call to restore_structure_step->process()
          line 125 of /backup/util/xml/parser/processors/grouped_parser_processor.class.php: call to restore_structure_parser_processor->dispatch_chunk()
          line 91 of /backup/util/helper/restore_structure_parser_processor.class.php: call to grouped_parser_processor->postprocess_chunk()
          line 148 of /backup/util/xml/parser/processors/simplified_parser_processor.class.php: call to restore_structure_parser_processor->postprocess_chunk()
          line 92 of /backup/util/xml/parser/processors/progressive_parser_processor.class.php: call to simplified_parser_processor->process_chunk()
          line 169 of /backup/util/xml/parser/progressive_parser.class.php: call to progressive_parser_processor->receive_chunk()
          line 253 of /backup/util/xml/parser/progressive_parser.class.php: call to progressive_parser->publish()
          line ? of unknownfile: call to progressive_parser->end_tag()
          line 158 of /backup/util/xml/parser/progressive_parser.class.php: call to xml_parse()
          line 137 of /backup/util/xml/parser/progressive_parser.class.php: call to progressive_parser->parse()
          line 105 of /backup/util/plan/restore_structure_step.class.php: call to progressive_parser->process()
          line 153 of /backup/util/plan/base_task.class.php: call to restore_structure_step->execute()
          line 182 of /backup/moodle2/restore_activity_task.class.php: call to base_task->execute()
          line 148 of /backup/util/plan/base_plan.class.php: call to restore_activity_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 147 of /backup/util/ui/restore_ui.class.php: call to restore_controller->execute_plan()
          line 46 of /backup/restore.php: call to restore_ui->execute()

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

                People

                • Votes:
                  0 Vote for this issue
                  Watchers:
                  0 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved:
                    Fix Release Date:
                    9/Jan/12