Can't export contacts
Overview
Can't export contacts
Reproduction steps
- Do a search, pick some contacts, select "Export Contacts" as the action.
- Select the fields to export. Exporting primary fields still works.
- Press Download File.
Current behaviour
DB Error: Field not found error:
Dec 03 18:49:06 [error] $Fatal Error Details = Array
(
[callback] => Array
(
[0] => CRM_Core_Error
[1] => handle
)
[code] => -19
[message] => DB Error: no such field
[mode] => 16
[debug_info] => SELECT contact_a.id as contact_id, contact_a.sort_name as `sort_name`, contact_a.first_name as `first_name` FROM civicrm_contact contact_a LEFT JOIN civicrm_email ON (contact_a.id = civicrm_email.contact_id AND civicrm_email.is_primary = 1) INNER JOIN civicrm_contact ctTable ON ctTable.contact_id = contact_a.id WHERE ( ( ( ( contact_a.sort_name LIKE '%jon%' ) OR ( civicrm_email.email LIKE '%jon%' ) ) ) ) AND ( 1 ) AND (contact_a.is_deleted = 0) AND contact_a.is_deleted != 1 LIMIT 0, 100000 [nativecode=1054 ** Unknown column 'ctTable.contact_id' in 'on clause']
[type] => DB_Error
[user_info] => SELECT contact_a.id as contact_id, contact_a.sort_name as `sort_name`, contact_a.first_name as `first_name` FROM civicrm_contact contact_a LEFT JOIN civicrm_email ON (contact_a.id = civicrm_email.contact_id AND civicrm_email.is_primary = 1) INNER JOIN civicrm_contact ctTable ON ctTable.contact_id = contact_a.id WHERE ( ( ( ( contact_a.sort_name LIKE '%jon%' ) OR ( civicrm_email.email LIKE '%jon%' ) ) ) ) AND ( 1 ) AND (contact_a.is_deleted = 0) AND contact_a.is_deleted != 1 LIMIT 0, 100000 [nativecode=1054 ** Unknown column 'ctTable.contact_id' in 'on clause']
[to_string] => [db_error: message="DB Error: no such field" code=-19 mode=callback callback=CRM_Core_Error::handle prefix="" info="SELECT contact_a.id as contact_id, contact_a.sort_name as `sort_name`, contact_a.first_name as `first_name` FROM civicrm_contact contact_a LEFT JOIN civicrm_email ON (contact_a.id = civicrm_email.contact_id AND civicrm_email.is_primary = 1) INNER JOIN civicrm_contact ctTable ON ctTable.contact_id = contact_a.id WHERE ( ( ( ( contact_a.sort_name LIKE '%jon%' ) OR ( civicrm_email.email LIKE '%jon%' ) ) ) ) AND ( 1 ) AND (contact_a.is_deleted = 0) AND contact_a.is_deleted != 1 LIMIT 0, 100000 [nativecode=1054 ** Unknown column 'ctTable.contact_id' in 'on clause']"]
)
Dec 03 18:49:06 [debug] $backTrace = #0 /home/jon/local/example/htdocs/wp-content/plugins/civicrm/civicrm/CRM/Core/Error.php(205): CRM_Core_Error::backtrace("backTrace", TRUE)
#1 /home/jon/local/example/htdocs/wp-content/plugins/civicrm/civicrm/packages/PEAR.php(921): CRM_Core_Error::handle(Object(DB_Error))
#2 /home/jon/local/example/htdocs/wp-content/plugins/civicrm/civicrm/packages/DB.php(997): PEAR_Error->__construct("DB Error: no such field", -19, 16, (Array:2), "SELECT contact_a.id as contact_id, contact_a.sort_name as `sort_name`, contac...")
#3 /home/jon/local/example/htdocs/wp-content/plugins/civicrm/civicrm/packages/PEAR.php(575): DB_Error->__construct(-19, 16, (Array:2), "SELECT contact_a.id as contact_id, contact_a.sort_name as `sort_name`, contac...")
#4 /home/jon/local/example/htdocs/wp-content/plugins/civicrm/civicrm/packages/PEAR.php(223): PEAR->_raiseError(Object(DB_mysqli), NULL, -19, 16, (Array:2), "SELECT contact_a.id as contact_id, contact_a.sort_name as `sort_name`, contac...", "DB_Error", TRUE)
#5 /home/jon/local/example/htdocs/wp-content/plugins/civicrm/civicrm/packages/DB/common.php(1925): PEAR->__call("raiseError", (Array:7))
#6 /home/jon/local/example/htdocs/wp-content/plugins/civicrm/civicrm/packages/DB/mysqli.php(936): DB_common->raiseError(-19, NULL, NULL, "SELECT contact_a.id as contact_id, contact_a.sort_name as `sort_name`, contac...", "1054 ** Unknown column 'ctTable.contact_id' in 'on clause'")
#7 /home/jon/local/example/htdocs/wp-content/plugins/civicrm/civicrm/packages/DB/mysqli.php(406): DB_mysqli->mysqliRaiseError()
#8 /home/jon/local/example/htdocs/wp-content/plugins/civicrm/civicrm/packages/DB/common.php(1231): DB_mysqli->simpleQuery("SELECT contact_a.id as contact_id, contact_a.sort_name as `sort_name`, contac...")
#9 /home/jon/local/example/htdocs/wp-content/plugins/civicrm/civicrm/packages/DB/DataObject.php(2696): DB_common->query("SELECT contact_a.id as contact_id, contact_a.sort_name as `sort_name`, contac...")
#10 /home/jon/local/example/htdocs/wp-content/plugins/civicrm/civicrm/packages/DB/DataObject.php(1829): DB_DataObject->_query("SELECT contact_a.id as contact_id, contact_a.sort_name as `sort_name`, contac...")
#11 /home/jon/local/example/htdocs/wp-content/plugins/civicrm/civicrm/CRM/Core/DAO.php(457): DB_DataObject->query("SELECT contact_a.id as contact_id, contact_a.sort_name as `sort_name`, contac...")
#12 /home/jon/local/example/htdocs/wp-content/plugins/civicrm/civicrm/CRM/Core/DAO.php(1564): CRM_Core_DAO->query("SELECT contact_a.id as contact_id, contact_a.sort_name as `sort_name`, contac...", TRUE)
#13 /home/jon/local/example/htdocs/wp-content/plugins/civicrm/civicrm/CRM/Export/BAO/Export.php(179): CRM_Core_DAO::executeQuery("SELECT contact_a.id as contact_id, contact_a.sort_name as `sort_name`, contac...")
#14 /home/jon/local/example/htdocs/wp-content/plugins/civicrm/civicrm/CRM/Export/Form/Map.php(142): CRM_Export_BAO_Export::exportComponents(FALSE, (Array:3), (Array:5), "`sort_name` asc", (Array:1), NULL, 1, " contact_a.id IN ( 730,30,846 ) ", "civicrm_contact", 0, 0, (Array:11), "AND")
#15 /home/jon/local/example/htdocs/wp-content/plugins/civicrm/civicrm/CRM/Core/Form.php(514): CRM_Export_Form_Map->postProcess()
#16 /home/jon/local/example/htdocs/wp-content/plugins/civicrm/civicrm/CRM/Core/StateMachine.php(144): CRM_Core_Form->mainProcess()
#17 /home/jon/local/example/htdocs/wp-content/plugins/civicrm/civicrm/CRM/Core/QuickForm/Action/Next.php(43): CRM_Core_StateMachine->perform(Object(CRM_Contact_Export_Form_Map), "next", "Next")
#18 /home/jon/local/example/htdocs/wp-content/plugins/civicrm/civicrm/packages/HTML/QuickForm/Controller.php(203): CRM_Core_QuickForm_Action_Next->perform(Object(CRM_Contact_Export_Form_Map), "next")
#19 /home/jon/local/example/htdocs/wp-content/plugins/civicrm/civicrm/packages/HTML/QuickForm/Page.php(103): HTML_QuickForm_Controller->handle(Object(CRM_Contact_Export_Form_Map), "next")
#20 /home/jon/local/example/htdocs/wp-content/plugins/civicrm/civicrm/CRM/Core/Controller.php(347): HTML_QuickForm_Page->handle("next")
#21 /home/jon/local/example/htdocs/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(312): CRM_Core_Controller->run((Array:3), (Array:0))
#22 /home/jon/local/example/htdocs/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(68): CRM_Core_Invoke::runItem((Array:13))
#23 /home/jon/local/example/htdocs/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(36): CRM_Core_Invoke::_invoke((Array:3))
#24 /home/jon/local/example/htdocs/wp-content/plugins/civicrm/civicrm.php(1649): CRM_Core_Invoke::invoke((Array:3))
#25 /home/jon/local/example/htdocs/wp-includes/class-wp-hook.php(287): CiviCRM_For_WordPress->invoke("")
#26 /home/jon/local/example/htdocs/wp-includes/class-wp-hook.php(311): WP_Hook->apply_filters("", (Array:1))
#27 /home/jon/local/example/htdocs/wp-includes/plugin.php(478): WP_Hook->do_action((Array:1))
#28 /home/jon/local/example/htdocs/wp-admin/admin.php(259): do_action("toplevel_page_CiviCRM")
#29 {main}
Expected behaviour
Contacts should export.
Environment information
This is Civi 5.32.0 and master, it works in 5.31.1, it's reproducible on the demo site.
I'm digging into it myself - but that ctTable.contact_id
instead of ctTable.id
is the key to this, if it rings any bells.