I set the pass fail rate for quizzes (from the main configuration menu) and when I tried to change the settings, I got this error:

PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'PRIMARY': INSERT INTO {quiz_user_settings} (uid, nid, vid, aid, pass_rate, summary_pass, summary_pass_format, summary_default, summary_default_format, randomization, backwards_navigation, keep_results, repeat_until_correct, feedback_time, display_feedback, takes, show_attempt_stats, time_limit, quiz_always, has_userpoints, allow_skipping, allow_resume, allow_jumping, show_passed) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5, :db_insert_placeholder_6, :db_insert_placeholder_7, :db_insert_placeholder_8, :db_insert_placeholder_9, :db_insert_placeholder_10, :db_insert_placeholder_11, :db_insert_placeholder_12, :db_insert_placeholder_13, :db_insert_placeholder_14, :db_insert_placeholder_15, :db_insert_placeholder_16, :db_insert_placeholder_17, :db_insert_placeholder_18, :db_insert_placeholder_19, :db_insert_placeholder_20, :db_insert_placeholder_21, :db_insert_placeholder_22, :db_insert_placeholder_23); Array ( [:db_insert_placeholder_0] => 1 [:db_insert_placeholder_1] => 0 [:db_insert_placeholder_2] => 0 [:db_insert_placeholder_3] => 0 [:db_insert_placeholder_4] => 80 [:db_insert_placeholder_5] =>

Good job!

[:db_insert_placeholder_6] => plain_text [:db_insert_placeholder_7] => You need a little review on this lesson.  Then try the quiz again! [:db_insert_placeholder_8] => filtered_html [:db_insert_placeholder_9] => 0 [:db_insert_placeholder_10] => 1 [:db_insert_placeholder_11] => 2 [:db_insert_placeholder_12] => 0 [:db_insert_placeholder_13] => 0 [:db_insert_placeholder_14] => 1 [:db_insert_placeholder_15] => 0 [:db_insert_placeholder_16] => 1 [:db_insert_placeholder_17] => 0 [:db_insert_placeholder_18] => 1 [:db_insert_placeholder_19] => 0 [:db_insert_placeholder_20] => 1 [:db_insert_placeholder_21] => 1 [:db_insert_placeholder_22] => 0 [:db_insert_placeholder_23] => 1 ) in _quiz_save_user_settings() (line 4159 of /home/vsource4/www/www/sites/all/modules/quiz/quiz.module).

It looks like it wants to save a few configuration rather than update the prior one. I'm going to look at the code but don't trust my skills enough to think that I can fix it.

Thanks in advance for any help or insights!

Comments

hhschoone’s picture

I get the same error here. It isn't thrown on a clean D 7.17.1 installation, but nevertheless persists when deactivating almost all modules on an existing D7.17 installation. Anyone any idea?

Sivaji_Ganesh_Jojodae’s picture

I confirm this is happening if tried to save default settings as user other than uid 1.

Sivaji_Ganesh_Jojodae’s picture

Status: Active » Fixed

This is fixed now.

Status: Fixed » Closed (fixed)

Automatically closed -- issue fixed for 2 weeks with no activity.

edboost’s picture

Great! Thanks for the update.

soulston’s picture

I am still getting the same error using 7.x-4.0-beta1.

It seems to be a conflict between trying to use merge_db when the $user->uid and $node->save_def_uid differ (quiz.module line 4188).

Reproduce steps;

- Install quiz, quiz_question, multichoice
- Save the settings as any user (I used uid 1) at /admin/quiz/settings/quiz_form
- Create a new user
- Save the settings form again at /admin/quiz/settings/quiz_form

(
    [%type] => PDOException
    [!message] => SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'PRIMARY': INSERT INTO {quiz_user_settings} (uid, nid, vid, aid, pass_rate, summary_pass, summary_pass_format, summary_default, summary_default_format, randomization, backwards_navigation, keep_results, repeat_until_correct, feedback_time, display_feedback, takes, show_attempt_stats, time_limit, quiz_always, has_userpoints, allow_skipping, allow_resume, allow_jumping, show_passed) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5, :db_insert_placeholder_6, :db_insert_placeholder_7, :db_insert_placeholder_8, :db_insert_placeholder_9, :db_insert_placeholder_10, :db_insert_placeholder_11, :db_insert_placeholder_12, :db_insert_placeholder_13, :db_insert_placeholder_14, :db_insert_placeholder_15, :db_insert_placeholder_16, :db_insert_placeholder_17, :db_insert_placeholder_18, :db_insert_placeholder_19, :db_insert_placeholder_20, :db_insert_placeholder_21, :db_insert_placeholder_22, :db_insert_placeholder_23); Array
(
    [:db_insert_placeholder_0] => 1
    [:db_insert_placeholder_1] => 0
    [:db_insert_placeholder_2] => 0
    [:db_insert_placeholder_3] => 
    [:db_insert_placeholder_4] => 100
    [:db_insert_placeholder_5] => 
    [:db_insert_placeholder_6] => filtered_html
    [:db_insert_placeholder_7] => 
    [:db_insert_placeholder_8] => filtered_html
    [:db_insert_placeholder_9] => 0
    [:db_insert_placeholder_10] => 1
    [:db_insert_placeholder_11] => 2
    [:db_insert_placeholder_12] => 0
    [:db_insert_placeholder_13] => 0
    [:db_insert_placeholder_14] => 0
    [:db_insert_placeholder_15] => 0
    [:db_insert_placeholder_16] => 0
    [:db_insert_placeholder_17] => 0
    [:db_insert_placeholder_18] => 1
    [:db_insert_placeholder_19] => 0
    [:db_insert_placeholder_20] => 1
    [:db_insert_placeholder_21] => 1
    [:db_insert_placeholder_22] => 0
    [:db_insert_placeholder_23] => 1
)
soulston’s picture

Version: 7.x-4.0-alpha2 » 7.x-4.0-beta1
Status: Closed (fixed) » Active

As an update I added my own submit handler for this as follows as a temporary measure:

/**
 * Implements hook_form_alter().
 *
 * Get the info about the referenced article and add it to the form.
 */
function my_module_form_alter(&$form, &$form_state, $form_id) {
  // Alter the submit handler for the quiz form to prevent errors when 
  // Different users save quiz settings.
  // altering the default settings.
  if ($form_id == 'quiz_admin_node_form') {
    $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Save'),
    '#submit' => array('_my_module_quiz_admin_node_form_submit'),
    );
  }
}

/**
 * overrides quiz_admin_node_form_validate() from quiz.admin.inc
 */
function _my_module_quiz_admin_node_form_submit($form, &$form_state) {
  // We add the uid for the "default user"
  global $user;
  $form_state['values']['save_def_uid'] = $user->uid;
  $form_state['values']['nid'] = 0;
  $form_state['values']['vid'] = 0;
  $form_state['values']['aid'] = '';
  _quiz_save_user_settings($form_state['values']);
}

  • Commit 18d713b on 7.x-4.x, 7.x-5.x by sivaji:
    Issue #1538808 by edboost: Fixed Error when trying to update overall...

  • Commit 18d713b on 7.x-4.x, 7.x-5.x, quiz-pages by sivaji:
    Issue #1538808 by edboost: Fixed Error when trying to update overall...

  • Commit 18d713b on 7.x-4.x, 7.x-5.x, quiz-pages, 2269219 by sivaji:
    Issue #1538808 by edboost: Fixed Error when trying to update overall...

  • Commit 18d713b on 7.x-4.x, 7.x-5.x, 2269219 by sivaji:
    Issue #1538808 by edboost: Fixed Error when trying to update overall...

  • sivaji committed 18d713b on 7.x-6.x
    Issue #1538808 by edboost: Fixed Error when trying to update overall...
djdevin’s picture

Status: Active » Closed (outdated)