error/moodle/error question answers missing in db

Revision as of 06:10, 31 May 2016 by Tim Hunt (talk | contribs)

Jump to: navigation, search

Note: You are currently viewing documentation for Moodle 3.3. Up-to-date documentation for the latest stable version of Moodle is probably available here: error/moodle/error question answers missing in db.

This error occurs occasionally when you are restoring a quizzes or question bank that has shared questions. The restore process will look to see if the shared questions already exist in database where the backup is being restored. If they do, it will link to the existing questions in the database, instead of creating new copied of the shared questions. This error occurs when that process fails.

In order to restore the shared questions, all the different parts of the question like question_answer rows (e.g. the choices of a multiple choice question) have to be matched up. This error occurs when the restore process looks in the database for a particular row that matches something in the backup file, and fails to find it.

In the past, more specific causes of this have been tracked down to:

  • Unusual combinations of whitespace in the question_answers. (When these are written out to to the XML in the backup file, then read back in, this can change the whitespace so that it no longer matches exactly. However, once we identified that, we changed to code so that this should no longer be a problem.)
  • More generally, in MDL-34812, this was linked to questions where text had been pasted from MS Word.

Possible solutions

  1. Restore the questions manually into your course (or perhaps move them using Export and Import in the question bank) and recreate the quiz.
  1. Try to work out which particular question is causing the problem. Move the question you suspect into a course on its own in the question bank, then try duplicating that to see if it still triggers the error.

Other notes

The file that is throwing this error is /backup/moodle2/restore_qtype_plugin.class.php around line 159.