← Back to team overview

mahara-contributors team mailing list archive

[Bug 1515929] Re: Copy a collection failing

 

Hi Ed,

This error is due to your database having duplicate rows in the
usr_custom_layout table for the user before they try to copy the
collection, of which at least one page has the same layout.

The code is expecting to retrieve only one row to match against the
current page being copied.

A few users of mahara have reported this problem but I've yet not been
able to replicate how they got duplicate rows in the usr_custom_layout
table in the first place.

If you could shed some light on that it would be great.

Anyway a fix for the problem is to remove by first finding them:

 SELECT * FROM usr_custom_layout WHERE usr IS NOT NULL AND usr > 0 ORDER
BY usr, layout;

The problem rows should show the same 'usr' id and 'layout' id in pairs.

You just need to pick one of the pair and delete id

Cheers

Robert

-- 
You received this bug notification because you are a member of Mahara
Contributors, which is subscribed to Mahara.
Matching subscriptions: Subscription for all Mahara Contributors -- please ask on #mahara-dev or mahara.org forum before editing or unsubscribing it!
https://bugs.launchpad.net/bugs/1515929

Title:
  Duplicate records in usr_custom_layout cause fatal crash when copying
  a collection

Status in Mahara:
  Confirmed
Status in Mahara 15.10 series:
  Confirmed
Status in Mahara 16.04 series:
  Confirmed

Bug description:
  When creating a collection by copying a previous collection we are
  getting an error of:

  Site unavailable
  A nonrecoverable error occurred. This probably means you have encountered a bug in the system

  PHP is reporting the following error and we are on the latest version
  of Mahara to date 15.10.0:

  2015/11/13 09:02:51 [error] 1077#0: *7505 FastCGI sent in stderr: "PHP message: [WAR] 0a (lib/errors.php:747) get_record_sql found more than one row. If you meant to retrieve more than one record, use get_records_*, otherwise check your code or database for inconsistencies
  PHP message: Call stack (most recent first):
  PHP message:   * log_message("get_record_sql found more than one row. If you mea...", 8, true, true) at /scratch/var/mahara/htdocs/lib/errors.php:97
  PHP message:   * log_warn("get_record_sql found more than one row. If you mea...") at /scratch/var/mahara/htdocs/lib/errors.php:747
  PHP message:   * SQLException->__construct("get_record_sql found more than one row. If you mea...") at /scratch/var/mahara/htdocs/lib/dml.php:328
  PHP message:   * get_record_sql("SELECT * FROM "usr_custom_layout"  WHERE "layout" ...", array(size 2)) at /scratch/var/mahara/htdocs/lib/dml.php:291
  PHP message:   * get_record("usr_custom_layout", "layout", "203", "usr", "1770") at /scratch/var/mahara/htdocs/lib/view.php:428
  PHP message:   * View::create_from_template(array(size 5), "40765", "1770", true, false) at /scratch/var/mahara/htdocs/lib/collection.php:292
  PHP message:   * Collection::create_from_template(array(size 6), 4307) at /scratch/var/mahara/htdocs/lib/view.php:6376
  PHP message:   * createview_submit(object(Pieform), array(size 7)) at Unknown:0
  PHP message:   * call_user_func_array("createview_submit", array(size 2)) at /scratch/var/mahara/htdocs/lib/pieforms/pieform.php:537
  PHP message:   * Pieform->__construct(array(size 8)) at /scratch/var/mahara/htdocs/lib/pieforms/pieform.php:164
  PHP message:   * Pieform::process(array(size 8)) at /scratch/var/mahara/htdocs/lib/pieforms/pieform.php:71
  PHP message:   * pieform(array(size 8)) at /scratch/var/mahara/htdocs/view/choosetemplate.php:27
  PHP message:
  PHP message: [WAR] 0a (lib/dml.php:327) get_record_sql found more than one row. If you meant to retrieve more than one record, use get_records_*, otherwise check your code or database for inconsistencies
  PHP message: Ca

  Cheers,
  Ed

To manage notifications about this bug go to:
https://bugs.launchpad.net/mahara/+bug/1515929/+subscriptions


References