Error when merging contacts
After an upgrade to Civi 5.23 on Drupal 7 started experiencing an issue during contact merges:
backTrace
#0 sites\all\modules\civicrm\CRM\Core\Error.php(148): CRM_Core_Error::backtrace()
#1 sites\all\modules\civicrm\vendor\pear\pear-core-minimal\src\PEAR.php(922): CRM_Core_Error::handle(Object(DB_Error))
#2 sites\all\modules\civicrm\packages\DB.php(997): PEAR_Error->__construct("DB Error: already exists", -5, 16, (Array:2), "UPDATE civicrm_activity_contact SET contact_id = 150 WHERE contact_id = 54501...")
#3 sites\all\modules\civicrm\vendor\pear\pear-core-minimal\src\PEAR.php(575): DB_Error->__construct(-5, 16, (Array:2), "UPDATE civicrm_activity_contact SET contact_id = 150 WHERE contact_id = 54501...")
#4 sites\all\modules\civicrm\vendor\pear\pear-core-minimal\src\PEAR.php(223): PEAR->_raiseError(Object(DB_mysqli), NULL, -5, 16, (Array:2), "UPDATE civicrm_activity_contact SET contact_id = 150 WHERE contact_id = 54501...", "DB_Error", TRUE)
#5 sites\all\modules\civicrm\packages\DB\common.php(1925): PEAR->__call("raiseError", (Array:7))
#6 sites\all\modules\civicrm\packages\DB\mysqli.php(935): DB_common->raiseError(-5, NULL, NULL, "UPDATE civicrm_activity_contact SET contact_id = 150 WHERE contact_id = 54501...", "1062 ** Duplicate entry '150-7752-3' for key 'UI_activity_contact'")
#7 sites\all\modules\civicrm\packages\DB\mysqli.php(405): DB_mysqli->mysqliRaiseError()
#8 sites\all\modules\civicrm\packages\DB\common.php(1231): DB_mysqli->simpleQuery("UPDATE civicrm_activity_contact SET contact_id = 150 WHERE contact_id = 54501")
#9 sites\all\modules\civicrm\packages\DB\DataObject.php(2696): DB_common->query("UPDATE civicrm_activity_contact SET contact_id = 150 WHERE contact_id = 54501")
#10 sites\all\modules\civicrm\packages\DB\DataObject.php(1829): DB_DataObject->_query("UPDATE civicrm_activity_contact SET contact_id = 150 WHERE contact_id = 54501")
#11 sites\all\modules\civicrm\CRM\Core\DAO.php(421): DB_DataObject->query("UPDATE civicrm_activity_contact SET contact_id = 150 WHERE contact_id = 54501")
#12 sites\all\modules\civicrm\CRM\Core\DAO.php(1473): CRM_Core_DAO->query("UPDATE civicrm_activity_contact SET contact_id = 150 WHERE contact_id = 54501", TRUE)
#13 sites\all\modules\civicrm\CRM\Dedupe\Merger.php(563): CRM_Core_DAO::executeQuery("UPDATE civicrm_activity_contact SET contact_id = 150 WHERE contact_id = 54501", (Array:0), TRUE, NULL, TRUE)
#14 sites\all\modules\civicrm\CRM\Dedupe\Merger.php(1316): CRM_Dedupe_Merger::moveContactBelongings(Object(CRM_Dedupe_MergeHandler), (Array:5), (Array:0))
#15 sites\all\modules\civicrm\CRM\Contact\Form\Merge.php(308): CRM_Dedupe_Merger::moveAllBelongings(150, 54501, (Array:16))
#16 sites\all\modules\civicrm\CRM\Core\Form.php(484): CRM_Contact_Form_Merge->postProcess()
#17 sites\all\modules\civicrm\CRM\Core\QuickForm\Action\Done.php(59): CRM_Core_Form->mainProcess()
#18 sites\all\modules\civicrm\packages\HTML\QuickForm\Controller.php(203): CRM_Core_QuickForm_Action_Done->perform(Object(CRM_Contact_Form_Merge), "done")
#19 sites\all\modules\civicrm\packages\HTML\QuickForm\Page.php(103): HTML_QuickForm_Controller->handle(Object(CRM_Contact_Form_Merge), "done")
#20 sites\all\modules\civicrm\CRM\Core\Controller.php(335): HTML_QuickForm_Page->handle("done")
#21 sites\all\modules\civicrm\CRM\Utils\Wrapper.php(98): CRM_Core_Controller->run()
#22 sites\all\modules\civicrm\CRM\Core\Invoke.php(285): CRM_Utils_Wrapper->run("CRM_Contact_Form_Merge", "Merge Contact", (Array:0))
#23 sites\all\modules\civicrm\CRM\Core\Invoke.php(68): CRM_Core_Invoke::runItem((Array:13))
#24 sites\all\modules\civicrm\CRM\Core\Invoke.php(36): CRM_Core_Invoke::_invoke((Array:3))
#25 sites\all\modules\civicrm\drupal\civicrm.module(454): CRM_Core_Invoke::invoke((Array:3))
#26 includes\menu.inc(527): civicrm_invoke("contact", "merge")
#27 index.php(21): menu_execute_active_handler()
#28 {main}
Sorry, due to an error, we are unable to fulfill your request at the moment. You may want to contact your administrator or service provider with more details about what action you were performing when this occurred.
DB Error: already exists
Error Details
Database Error Code: Duplicate entry '150-7752-3' for key 'UI_activity_contact', 1062
Additional Details:
Array
(
[callback] => Array
(
[0] => CRM_Core_Error
[1] => handle
)
[code] => -5
[message] => DB Error: already exists
[mode] => 16
[debug_info] => UPDATE civicrm_activity_contact SET contact_id = 150 WHERE contact_id = 54501 [nativecode=1062 ** Duplicate entry '150-7752-3' for key 'UI_activity_contact']
[type] => DB_Error
[user_info] => UPDATE civicrm_activity_contact SET contact_id = 150 WHERE contact_id = 54501 [nativecode=1062 ** Duplicate entry '150-7752-3' for key 'UI_activity_contact']
[to_string] => [db_error: message="DB Error: already exists" code=-5 mode=callback callback=CRM_Core_Error::handle prefix="" info="UPDATE civicrm_activity_contact SET contact_id = 150 WHERE contact_id = 54501 [nativecode=1062 ** Duplicate entry '150-7752-3' for key 'UI_activity_contact']"]
)
Return to home page.
Fatal error: Uncaught CRM_Core_Exception: [0: Transaction integrity error: Expected to find active frame thrown in sites\all\modules\civicrm\Civi\Core\Transaction\Manager.php on line 93
This seems to be caused by the fact that we record activities for all of our mailings and merging records who were sent the same mailing is causing "Duplicate entry '150-7752-3' for key 'UI_activity_contact'". We have always done this though and have never had the error before.