File custom fields cause a fatal error when trying to merge
If you are trying to merge a contact with a custom field that is a file, if the contact that will be deleted is passing a file to the remain contact, the merge will fail, generate a fatal error, and lose all the custom data in the set including the file.
To recreate:
- Create a contact custom field that accepts a file.
- Add files to one or two contact records.
- Merge a contact with a file into another contact
- Fatal Error occurs. All files are no longer attached to the custom fields. The contact to be deleted loses all the custom fields. While the remaining contact looses only the file.
If the contact that is to remain has no image the error message is
No record found for given file ID - 0 and entity ID - 203
The Entity ID is the Contact ID of the remaining contact
Feb 13 16:13:23 [info] $backTrace = #0 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Error.php(381): CRM_Core_Error::backtrace("backTrace", TRUE) #1 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/BAO/File.php(234): CRM_Core_Error::fatal("No record found for given file ID - 0 and entity ID - 203") #2 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Dedupe/Merger.php(1723): CRM_Core_BAO_File::deleteFileReferences(NULL, "203", 9) #3 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Contact/Form/Merge.php(289): CRM_Dedupe_Merger::moveAllBelongings("203", "204", (Array:11)) #4 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Form.php(489): CRM_Contact_Form_Merge->postProcess() #5 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/StateMachine.php(160): CRM_Core_Form->mainProcess() #6 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/QuickForm/Action/Next.php(61): CRM_Core_StateMachine->perform(Object(CRM_Contact_Form_Merge), "next", "Next") #7 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/packages/HTML/QuickForm/Controller.php(203): CRM_Core_QuickForm_Action_Next->perform(Object(CRM_Contact_Form_Merge), "next") #8 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/packages/HTML/QuickForm/Page.php(103): HTML_QuickForm_Controller->handle(Object(CRM_Contact_Form_Merge), "next") #9 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Controller.php(351): HTML_QuickForm_Page->handle("next") #10 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Utils/Wrapper.php(113): CRM_Core_Controller->run() #11 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(282): CRM_Utils_Wrapper->run("CRM_Contact_Form_Merge", "Merge Contact", (Array:0)) #12 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(84): CRM_Core_Invoke::runItem((Array:13)) #13 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(52): CRM_Core_Invoke::_invoke((Array:3)) #14 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm.php(1240): CRM_Core_Invoke::invoke((Array:3)) #15 (closed) /srv/www/demo19/public_html/wp-includes/class-wp-hook.php(298): CiviCRM_For_WordPress->invoke("") #16 (closed) /srv/www/demo19/public_html/wp-includes/class-wp-hook.php(323): WP_Hook->apply_filters("", (Array:1)) #17 (closed) /srv/www/demo19/public_html/wp-includes/plugin.php(453): WP_Hook->do_action((Array:1)) #18 (closed) /srv/www/demo19/public_html/wp-admin/admin.php(222): do_action("toplevel_page_CiviCRM") #19 (closed) {main}
If the remaining contact has a file that will be overwritten.
** DB Error: syntax error**
[code] => -2 [message] => DB Error: syntax error [mode] => 16 [debug_info] => UPDATE civicrm_value_test_info_4 SET image_9 = WHERE entity_id = 203 [nativecode=1064 ** You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE entity_id = 203' at line 1] [type] => DB_Error [user_info] => UPDATE civicrm_value_test_info_4 SET image_9 = WHERE entity_id = 203 [nativecode=1064 ** You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE entity_id = 203' at line 1] [to_string] => [db_error: message="DB Error: syntax error" code=-2 mode=callback callback=CRM_Core_Error::handle prefix="" info="UPDATE civicrm_value_test_info_4 SET image_9 = WHERE entity_id = 203 [nativecode=1064 ** You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE entity_id = 203' at line 1]"] )
#1 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/packages/PEAR.php(921): CRM_Core_Error::handle(Object(DB_Error)) #2 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/packages/DB.php(985): PEAR_Error->__construct("DB Error: syntax error", -2, 16, (Array:2), "UPDATE civicrm_value_test_info_4 SET image_9 = WHERE entity_id = 203 [native...") #3 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/packages/PEAR.php(575): DB_Error->__construct(-2, 16, (Array:2), "UPDATE civicrm_value_test_info_4 SET image_9 = WHERE entity_id = 203 [native...") #4 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/packages/PEAR.php(223): PEAR->_raiseError(Object(DB_mysqli), NULL, -2, 16, (Array:2), "UPDATE civicrm_value_test_info_4 SET image_9 = WHERE entity_id = 203 [native...", "DB_Error", TRUE) #5 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/packages/DB/common.php(1907): PEAR->__call("raiseError", (Array:7)) #6 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/packages/DB/mysqli.php(933): DB_common->raiseError(-2, NULL, NULL, "UPDATE civicrm_value_test_info_4 SET image_9 = WHERE entity_id = 203 [native...", "1064 ** You have an error in your SQL syntax; check the manual that correspon...") #7 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/packages/DB/mysqli.php(403): DB_mysqli->mysqliRaiseError() #8 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/packages/DB/common.php(1216): DB_mysqli->simpleQuery("UPDATE civicrm_value_test_info_4 SET image_9 = WHERE entity_id = 203") #9 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/packages/DB/DataObject.php(2415): DB_common->query("UPDATE civicrm_value_test_info_4 SET image_9 = WHERE entity_id = 203") #10 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/packages/DB/DataObject.php(1607): DB_DataObject->_query("UPDATE civicrm_value_test_info_4 SET image_9 = WHERE entity_id = 203") #11 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/DAO.php(438): DB_DataObject->query("UPDATE civicrm_value_test_info_4 SET image_9 = WHERE entity_id = 203") #12 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/DAO.php(1413): CRM_Core_DAO->query("UPDATE civicrm_value_test_info_4 SET image_9 = WHERE entity_id = 203", TRUE) #13 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Dedupe/Merger.php(1736): CRM_Core_DAO::executeQuery("UPDATE civicrm_value_test_info_4 SET image_9 = WHERE entity_id = 203") #14 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Contact/Form/Merge.php(289): CRM_Dedupe_Merger::moveAllBelongings("203", "204", (Array:10)) #15 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Form.php(489): CRM_Contact_Form_Merge->postProcess() #16 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/StateMachine.php(160): CRM_Core_Form->mainProcess() #17 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/QuickForm/Action/Next.php(61): CRM_Core_StateMachine->perform(Object(CRM_Contact_Form_Merge), "next", "Next") #18 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/packages/HTML/QuickForm/Controller.php(203): CRM_Core_QuickForm_Action_Next->perform(Object(CRM_Contact_Form_Merge), "next") #19 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/packages/HTML/QuickForm/Page.php(103): HTML_QuickForm_Controller->handle(Object(CRM_Contact_Form_Merge), "next") #20 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Controller.php(351): HTML_QuickForm_Page->handle("next") #21 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Utils/Wrapper.php(113): CRM_Core_Controller->run() #22 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(282): CRM_Utils_Wrapper->run("CRM_Contact_Form_Merge", "Merge Contact", (Array:0)) #23 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(84): CRM_Core_Invoke::runItem((Array:13)) #24 /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(52): CRM_Core_Invoke::_invoke((Array:3)) #25 (closed) /srv/www/demo19/public_html/wp-content/plugins/civicrm/civicrm.php(1240): CRM_Core_Invoke::invoke((Array:3)) #26 (closed) /srv/www/demo19/public_html/wp-includes/class-wp-hook.php(298): CiviCRM_For_WordPress->invoke("") #27 (closed) /srv/www/demo19/public_html/wp-includes/class-wp-hook.php(323): WP_Hook->apply_filters("", (Array:1)) #28 (closed) /srv/www/demo19/public_html/wp-includes/plugin.php(453): WP_Hook->do_action((Array:1)) #29 (closed) /srv/www/demo19/public_html/wp-admin/admin.php(222): do_action("toplevel_page_CiviCRM")