MySQL limitation causes fatal error in managing custom fields and in viewing contacts; when custom group has more than 62 "is_searchable = yes" fields
Overview
CiviCRM will allow the user to submit the "Create custom field" form for as many fields as a user wishes to create. However, if there are already 62 "is_searchable" custom fields in a custom field group, when the user submits this form for an additional custom field with "is_searchable = yes", several problems are encountered:
- The "create custom field" form submission fails with a fatal error.
- The newly created custom field appears in the list of fields for this custom group, but attempts to delete the field fail with a fatal error.
- Attempting to viewing any entity to which the custom field group applies (e.g. any contact if the group is for All Contacts) also fails with a fatal error.
These fatal errors are caused by MySQL's limit of 64 indexes on any table (which limit is not configurable at runtime, if at all).
Reproduction steps
Reproduced on dmaster.demo.civicrm.org today ("Powered by CiviCRM 5.42.alpha1"):
- Create a new custom group; note the entity to which this group applies; in this example we'll use "All contacts"
- Create 62 custom fields with "is_searchable = yes" in the custom group; we'll name them "test 1", "test 2", etc. (In testing I use the api3 explorer for convenience.)
- Attempt to create a new custom field e.g. "test 63" with "is_searchable = yes". Submit the "create field" form; observe fatal error,
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: unknown error
: Or in api3:
{
"code": -1,
"error_message": "DB Error: unknown error",
"mode": 16,
"debug_info": " ALTER TABLE civicrm_value_test_limit_of_7\n ADD COLUMN `test_64_78` varchar(255),\n ADD INDEX INDEX_test_64_78 ( test_64_78 ) [nativecode=1069 ** Too many keys specified; max 64 keys allowed]",
"type": "DB_Error",
"user_info": " ALTER TABLE civicrm_value_test_limit_of_7\n ADD COLUMN `test_64_78` varchar(255),\n ADD INDEX INDEX_test_64_78 ( test_64_78 ) [nativecode=1069 ** Too many keys specified; max 64 keys allowed]",
"to_string": "[db_error: message=\"DB Error: unknown error\" code=-1 mode=callback callback=CRM_Utils_REST::fatal prefix=\"\" info=\" ALTER TABLE civicrm_value_test_limit_of_7\n ADD COLUMN `test_64_78` varchar(255),\n ADD INDEX INDEX_test_64_78 ( test_64_78 ) [nativecode=1069 ** Too many keys specified; max 64 keys allowed]\"]",
"is_error": 1
}
$result = civicrm_api3('CustomField', 'create', [
'custom_group_id' => "TEST_limit_of_64_is_searchable_fields_in_a_group",
'data_type' => "String",
'html_type' => "Text",
'is_searchable' => 1,
'label' => "test 64",
]);
- View the list of custom fields for this group (e.g. https://dmaster.demo.civicrm.org/civicrm/admin/custom/group/field?reset=1&new=1&gid=N&action=browse where N is custom group ID); observe the field "test 63" is listed.
- From the "more >" link for this field, open the "Delete" link in a new tab so as to see the Delete Field form in its own window without pop-up. Submit the Delete Field form. Observe fatal error
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: not found
: - Note that this custom group is for "all contacts". Attempt to view any contact, e.g. https://dmaster.demo.civicrm.org/civicrm/contact/view?reset=1&cid=203 . Observe fatal error
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: no such field
:
Workaround to allow contacts to be viewed again without fatal error:
- Disable this custom field. This will cause the View Contact process to ignore the custom field, thereby avoiding the fatal error.
Related bad behavior: Enable "is searchable" on an existing field
- In the custom group already created above, create one more field e.g. "Test 66, not searchable upon creation" with "is_searchable = no". Observe this is created without error and none of the above problems are seen.
- Edit this field and enable the "is searchable" setting. Observe fatal error,
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: unknown error
- I assume at this point that civicrm thinks the field is indexed, but that no such index exists in mysql. I can't confirm this on dmaster.demo, and haven't made time to investigate in a dev environment.
- View the list of custom fields for this custom group, and observe that this field is marked as "is searchable = yes" (but it's probably not indexed in mysql).
- Navigate to Search > Advanced Search, and observe that this field "test 66, not searchable upon creation" is available as a search criteria (even though it's probably not indexed in mysql). This probably will lead to performance issues in searching.
Current behaviour
See repro above.
Expected behaviour
When attempting to create this 63rd custom field, civicrm should report a non-fatal error along these lines: This custom group has 62 fields with the "Is Searchable" property enabled; please disable this setting on one or more fields before attempting to create another one with this setting enabled.
Likewise, when attempting to enable "is searchable" for an existing custom field, in a group that already has 62 "is searchable" fields, the user should be prevented from doing so with a similar error.
Environment information
dmaster.demo.civicrm.org
Comments
Not run-time configurable: MySQL InnoDB documentation states, "A table can contain a maximum of 64 secondary indexes." No mention is made of configurations -- runtime or otherwise -- that could change this limit. Reference: https://dev.mysql.com/doc/refman/5.7/en/innodb-limits.html
Underlying log messages from live site with this problem:
Fatal error upon field creation:
Aug 25 18:34:06 [error] $Fatal Error Details = Array
(
[callback] => Array
(
[0] => CRM_Core_Error
[1] => exceptionHandler
)
[code] => -1
[message] => DB Error: unknown error
[mode] => 16
[debug_info] => ALTER TABLE civicrm_value_category_codes__new_12_12__31
ADD COLUMN `brdcast_other_573` tinyint,
ADD INDEX INDEX_brdcast_other_573 ( brdcast_other_573 ) [nativecode=1069 ** Too many keys specified; max 64 keys allowed]
[type] => DB_Error
[user_info] => ALTER TABLE civicrm_value_category_codes__new_12_12__31
ADD COLUMN `brdcast_other_573` tinyint,
ADD INDEX INDEX_brdcast_other_573 ( brdcast_other_573 ) [nativecode=1069 ** Too many keys specified; max 64 keys allowed]
[to_string] => [db_error: message="DB Error: unknown error" code=-1 mode=callback callback=CRM_Core_Error::exceptionHandler prefix="" info=" ALTER TABLE civicrm_value_category_codes__new_12_12__31
ADD COLUMN `brdcast_other_573` tinyint,
ADD INDEX INDEX_brdcast_other_573 ( brdcast_other_573 ) [nativecode=1069 ** Too many keys specified; max 64 keys allowed]"]
)
Aug 25 18:34:06 [debug] $backTrace = #0 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/Error.php(942): CRM_Core_Error::backtrace("backTrace", TRUE)
#1 /var/www/domains/example.client.joineryhq.com/vendor/pear/pear-core-minimal/src/PEAR.php(944): CRM_Core_Error::exceptionHandler(Object(DB_Error))
#2 /var/www/domains/example.client.joineryhq.com/vendor/pear/db/DB.php(997): PEAR_Error->__construct("DB Error: unknown error", -1, 16, (Array:2), " ALTER TABLE civicrm_value_category_codes__new_12_12__31\n ADD ...")
#3 /var/www/domains/example.client.joineryhq.com/vendor/pear/pear-core-minimal/src/PEAR.php(575): DB_Error->__construct(-1, 16, (Array:2), " ALTER TABLE civicrm_value_category_codes__new_12_12__31\n ADD ...")
#4 /var/www/domains/example.client.joineryhq.com/vendor/pear/pear-core-minimal/src/PEAR.php(223): PEAR->_raiseError(Object(DB_mysqli), NULL, -1, 16, (Array:2), " ALTER TABLE civicrm_value_category_codes__new_12_12__31\n ADD ...", "DB_Error", TRUE)
#5 /var/www/domains/example.client.joineryhq.com/vendor/pear/db/DB/common.php(1928): PEAR->__call("raiseError", (Array:7))
#6 /var/www/domains/example.client.joineryhq.com/vendor/pear/db/DB/mysqli.php(936): DB_common->raiseError(-1, NULL, NULL, " ALTER TABLE civicrm_value_category_codes__new_12_12__31\n ADD ...", "1069 ** Too many keys specified; max 64 keys allowed")
#7 /var/www/domains/example.client.joineryhq.com/vendor/pear/db/DB/mysqli.php(406): DB_mysqli->mysqliRaiseError()
#8 /var/www/domains/example.client.joineryhq.com/vendor/pear/db/DB/common.php(1234): DB_mysqli->simpleQuery(" ALTER TABLE civicrm_value_category_codes__new_12_12__31\n ADD ...")
#9 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-packages/DB/DataObject.php(2696): DB_common->query(" ALTER TABLE civicrm_value_category_codes__new_12_12__31\n ADD ...")
#10 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-packages/DB/DataObject.php(1829): DB_DataObject->_query(" ALTER TABLE civicrm_value_category_codes__new_12_12__31\n ADD ...")
#11 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/DAO.php(454): DB_DataObject->query(" ALTER TABLE civicrm_value_category_codes__new_12_12__31\n ADD ...")
#12 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/DAO.php(1565): CRM_Core_DAO->query(" ALTER TABLE civicrm_value_category_codes__new_12_12__31\n ADD ...", FALSE)
#13 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/BAO/CustomField.php(1692): CRM_Core_DAO::executeQuery(" ALTER TABLE civicrm_value_category_codes__new_12_12__31\n ADD ...", (Array:0), TRUE, NULL, FALSE, FALSE)
#14 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/BAO/CustomField.php(95): CRM_Core_BAO_CustomField::createField(Object(CRM_Core_DAO_CustomField), "add")
#15 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Custom/Form/Field.php(882): CRM_Core_BAO_CustomField::create((Array:35))
#16 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/Form.php(526): CRM_Custom_Form_Field->postProcess()
#17 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/QuickForm/Action/Done.php(59): CRM_Core_Form->mainProcess()
#18 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-packages/HTML/QuickForm/Controller.php(203): CRM_Core_QuickForm_Action_Done->perform(Object(CRM_Custom_Form_Field), "done")
#19 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-packages/HTML/QuickForm/Page.php(103): HTML_QuickForm_Controller->handle(Object(CRM_Custom_Form_Field), "done")
#20 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/Controller.php(347): HTML_QuickForm_Page->handle("done")
#21 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Utils/Wrapper.php(98): CRM_Core_Controller->run()
#22 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/Invoke.php(286): CRM_Utils_Wrapper->run("CRM_Custom_Form_Field", "Custom Field - Add", (Array:0))
#23 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/Invoke.php(69): CRM_Core_Invoke::runItem((Array:13))
#24 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/Invoke.php(36): CRM_Core_Invoke::_invoke((Array:6))
#25 /var/www/domains/example.client.joineryhq.com/web/modules/contrib/civicrm/src/Civicrm.php(88): CRM_Core_Invoke::invoke((Array:6))
#26 /var/www/domains/example.client.joineryhq.com/web/modules/contrib/civicrm/src/Controller/CivicrmController.php(80): Drupal\civicrm\Civicrm->invoke((Array:6))
#27 [internal function](): Drupal\civicrm\Controller\CivicrmController->main((Array:6), "")
#28 /var/www/domains/example.client.joineryhq.com/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array((Array:2), (Array:2))
#29 /var/www/domains/example.client.joineryhq.com/web/core/lib/Drupal/Core/Render/Renderer.php(573): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
#30 /var/www/domains/example.client.joineryhq.com/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(124): Drupal\Core\Render\Renderer->executeInRenderContext(Object(Drupal\Core\Render\RenderContext), Object(Closure))
#31 /var/www/domains/example.client.joineryhq.com/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext((Array:2), (Array:2))
#32 /var/www/domains/example.client.joineryhq.com/vendor/symfony/http-kernel/HttpKernel.php(151): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
#33 /var/www/domains/example.client.joineryhq.com/vendor/symfony/http-kernel/HttpKernel.php(68): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1)
#34 /var/www/domains/example.client.joineryhq.com/web/core/lib/Drupal/Core/StackMiddleware/Session.php(57): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#35 /var/www/domains/example.client.joineryhq.com/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(47): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#36 /var/www/domains/example.client.joineryhq.com/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#37 /var/www/domains/example.client.joineryhq.com/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\page_cache\StackMiddleware\PageCache->pass(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#38 /var/www/domains/example.client.joineryhq.com/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(47): Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#39 /var/www/domains/example.client.joineryhq.com/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(52): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#40 /var/www/domains/example.client.joineryhq.com/vendor/stack/builder/src/Stack/StackedHttpKernel.php(23): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#41 /var/www/domains/example.client.joineryhq.com/web/core/lib/Drupal/Core/DrupalKernel.php(708): Stack\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#42 /var/www/domains/example.client.joineryhq.com/web/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request))
#43 {main}
Fatal error upon attempt to delete field:
Aug 26 12:34:04 [error] $Fatal Error Details = Array
(
[callback] => Array
(
[0] => CRM_Core_Error
[1] => exceptionHandler
)
[code] => -4
[message] => DB Error: not found
[mode] => 16
[debug_info] => ALTER TABLE civicrm_value_category_codes__new_12_12__31 DROP COLUMN `brdcast_other_573` [nativecode=1091 ** Can't DROP 'brdcast_other_573'; check that column/key exists]
[type] => DB_Error
[user_info] => ALTER TABLE civicrm_value_category_codes__new_12_12__31 DROP COLUMN `brdcast_other_573` [nativecode=1091 ** Can't DROP 'brdcast_other_573'; check that column/key exists]
[to_string] => [db_error: message="DB Error: not found" code=-4 mode=callback callback=CRM_Core_Error::exceptionHandler prefix="" info=" ALTER TABLE civicrm_value_category_codes__new_12_12__31 DROP COLUMN `brdcast_other_573` [nativecode=1091 ** Can't DROP 'brdcast_other_573'; check that column/key exists]"]
)
Aug 26 12:34:04 [debug] $backTrace = #0 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/Error.php(942): CRM_Core_Error::backtrace("backTrace", TRUE)
#1 /var/www/domains/example.client.joineryhq.com/vendor/pear/pear-core-minimal/src/PEAR.php(944): CRM_Core_Error::exceptionHandler(Object(DB_Error))
#2 /var/www/domains/example.client.joineryhq.com/vendor/pear/db/DB.php(997): PEAR_Error->__construct("DB Error: not found", -4, 16, (Array:2), " ALTER TABLE civicrm_value_category_codes__new_12_12__31 DROP COLUMN `...")
#3 /var/www/domains/example.client.joineryhq.com/vendor/pear/pear-core-minimal/src/PEAR.php(575): DB_Error->__construct(-4, 16, (Array:2), " ALTER TABLE civicrm_value_category_codes__new_12_12__31 DROP COLUMN `...")
#4 /var/www/domains/example.client.joineryhq.com/vendor/pear/pear-core-minimal/src/PEAR.php(223): PEAR->_raiseError(Object(DB_mysqli), NULL, -4, 16, (Array:2), " ALTER TABLE civicrm_value_category_codes__new_12_12__31 DROP COLUMN `...", "DB_Error", TRUE)
#5 /var/www/domains/example.client.joineryhq.com/vendor/pear/db/DB/common.php(1928): PEAR->__call("raiseError", (Array:7))
#6 /var/www/domains/example.client.joineryhq.com/vendor/pear/db/DB/mysqli.php(936): DB_common->raiseError(-4, NULL, NULL, " ALTER TABLE civicrm_value_category_codes__new_12_12__31 DROP COLUMN `...", "1091 ** Can't DROP 'brdcast_other_573'; check that column/key exists")
#7 /var/www/domains/example.client.joineryhq.com/vendor/pear/db/DB/mysqli.php(406): DB_mysqli->mysqliRaiseError()
#8 /var/www/domains/example.client.joineryhq.com/vendor/pear/db/DB/common.php(1234): DB_mysqli->simpleQuery(" ALTER TABLE civicrm_value_category_codes__new_12_12__31 DROP COLUMN `...")
#9 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-packages/DB/DataObject.php(2696): DB_common->query(" ALTER TABLE civicrm_value_category_codes__new_12_12__31 DROP COLUMN `...")
#10 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-packages/DB/DataObject.php(1829): DB_DataObject->_query(" ALTER TABLE civicrm_value_category_codes__new_12_12__31 DROP COLUMN `...")
#11 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/DAO.php(454): DB_DataObject->query(" ALTER TABLE civicrm_value_category_codes__new_12_12__31 DROP COLUMN `...")
#12 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/DAO.php(1565): CRM_Core_DAO->query(" ALTER TABLE civicrm_value_category_codes__new_12_12__31 DROP COLUMN `...", FALSE)
#13 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/BAO/CustomField.php(1692): CRM_Core_DAO::executeQuery(" ALTER TABLE civicrm_value_category_codes__new_12_12__31 DROP COLUMN `...", (Array:0), TRUE, NULL, FALSE, FALSE)
#14 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/BAO/CustomField.php(1004): CRM_Core_BAO_CustomField::createField(Object(CRM_Core_DAO_CustomField), "delete")
#15 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Custom/Form/DeleteField.php(85): CRM_Core_BAO_CustomField::deleteField(Object(CRM_Core_DAO_CustomField))
#16 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/Form.php(526): CRM_Custom_Form_DeleteField->postProcess()
#17 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/StateMachine.php(144): CRM_Core_Form->mainProcess()
#18 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/QuickForm/Action/Next.php(43): CRM_Core_StateMachine->perform(Object(CRM_Custom_Form_DeleteField), "next", "Next")
#19 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-packages/HTML/QuickForm/Controller.php(203): CRM_Core_QuickForm_Action_Next->perform(Object(CRM_Custom_Form_DeleteField), "next")
#20 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-packages/HTML/QuickForm/Page.php(103): HTML_QuickForm_Controller->handle(Object(CRM_Custom_Form_DeleteField), "next")
#21 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/Controller.php(347): HTML_QuickForm_Page->handle("next")
#22 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Custom/Page/Field.php(246): CRM_Core_Controller->run()
#23 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/Invoke.php(313): CRM_Custom_Page_Field->run((Array:5), NULL)
#24 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/Invoke.php(69): CRM_Core_Invoke::runItem((Array:14))
#25 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/Invoke.php(36): CRM_Core_Invoke::_invoke((Array:5))
#26 /var/www/domains/example.client.joineryhq.com/web/modules/contrib/civicrm/src/Civicrm.php(88): CRM_Core_Invoke::invoke((Array:5))
#27 /var/www/domains/example.client.joineryhq.com/web/modules/contrib/civicrm/src/Controller/CivicrmController.php(80): Drupal\civicrm\Civicrm->invoke((Array:5))
#28 [internal function](): Drupal\civicrm\Controller\CivicrmController->main((Array:5), "")
#29 /var/www/domains/example.client.joineryhq.com/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array((Array:2), (Array:2))
#30 /var/www/domains/example.client.joineryhq.com/web/core/lib/Drupal/Core/Render/Renderer.php(573): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
#31 /var/www/domains/example.client.joineryhq.com/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(124): Drupal\Core\Render\Renderer->executeInRenderContext(Object(Drupal\Core\Render\RenderContext), Object(Closure))
#32 /var/www/domains/example.client.joineryhq.com/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext((Array:2), (Array:2))
#33 /var/www/domains/example.client.joineryhq.com/vendor/symfony/http-kernel/HttpKernel.php(151): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
#34 /var/www/domains/example.client.joineryhq.com/vendor/symfony/http-kernel/HttpKernel.php(68): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1)
#35 /var/www/domains/example.client.joineryhq.com/web/core/lib/Drupal/Core/StackMiddleware/Session.php(57): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#36 /var/www/domains/example.client.joineryhq.com/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(47): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#37 /var/www/domains/example.client.joineryhq.com/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#38 /var/www/domains/example.client.joineryhq.com/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\page_cache\StackMiddleware\PageCache->pass(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#39 /var/www/domains/example.client.joineryhq.com/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(47): Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#40 /var/www/domains/example.client.joineryhq.com/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(52): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#41 /var/www/domains/example.client.joineryhq.com/vendor/stack/builder/src/Stack/StackedHttpKernel.php(23): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#42 /var/www/domains/example.client.joineryhq.com/web/core/lib/Drupal/Core/DrupalKernel.php(708): Stack\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#43 /var/www/domains/example.client.joineryhq.com/web/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request))
#44 {main}
Fatal error on attempting to view contact:
Aug 26 10:39:00 [error] $Fatal Error Details = Array
(
[callback] => Array
(
[0] => CRM_Core_Error
[1] => exceptionHandler
)
[code] => -19
[message] => DB Error: no such field
[mode] => 16
[debug_info] =>
SELECT [REDACTED FOR PRIVACY: very long list of custom field columns]
FROM (SELECT 303407 as entity_id ) as first
LEFT JOIN civicrm_value_key_note_21 USING (entity_id)
LEFT JOIN civicrm_value_family_2 USING (entity_id)
LEFT JOIN civicrm_value_contact_information_9 USING (entity_id)
LEFT JOIN civicrm_value_skills_and_interests_5 USING (entity_id)
LEFT JOIN civicrm_value_category_codes__new_12_12__31 USING (entity_id)
LEFT JOIN civicrm_value_motive_codes_39 USING (entity_id)
WHERE first.entity_id = 303407
[nativecode=1054 ** Unknown column 'civicrm_value_category_codes__new_12_12__31.brdcast_other_573' in 'field list']
[type] => DB_Error
[user_info] =>
SELECT [REDACTED FOR PRIVACY: very long list of custom field columns]
FROM (SELECT 303407 as entity_id ) as first
LEFT JOIN civicrm_value_key_note_21 USING (entity_id)
LEFT JOIN civicrm_value_family_2 USING (entity_id)
LEFT JOIN civicrm_value_contact_information_9 USING (entity_id)
LEFT JOIN civicrm_value_skills_and_interests_5 USING (entity_id)
LEFT JOIN civicrm_value_category_codes__new_12_12__31 USING (entity_id)
LEFT JOIN civicrm_value_motive_codes_39 USING (entity_id)
WHERE first.entity_id = 303407
[nativecode=1054 ** Unknown column 'civicrm_value_category_codes__new_12_12__31.brdcast_other_573' in 'field list']
[to_string] => [db_error: message="DB Error: no such field" code=-19 mode=callback callback=CRM_Core_Error::exceptionHandler prefix="" info="
SELECT [REDACTED FOR PRIVACY: very long list of custom field columns]
FROM (SELECT 303407 as entity_id ) as first
LEFT JOIN civicrm_value_key_note_21 USING (entity_id)
LEFT JOIN civicrm_value_family_2 USING (entity_id)
LEFT JOIN civicrm_value_contact_information_9 USING (entity_id)
LEFT JOIN civicrm_value_skills_and_interests_5 USING (entity_id)
LEFT JOIN civicrm_value_category_codes__new_12_12__31 USING (entity_id)
LEFT JOIN civicrm_value_motive_codes_39 USING (entity_id)
WHERE first.entity_id = 303407
[nativecode=1054 ** Unknown column 'civicrm_value_category_codes__new_12_12__31.brdcast_other_573' in 'field list']"]
)
Aug 26 10:39:00 [debug] $backTrace = #0 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/Error.php(942): CRM_Core_Error::backtrace("backTrace", TRUE)
#1 /var/www/domains/example.client.joineryhq.com/vendor/pear/pear-core-minimal/src/PEAR.php(944): CRM_Core_Error::exceptionHandler(Object(DB_Error))
#2 /var/www/domains/example.client.joineryhq.com/vendor/pear/db/DB.php(997): PEAR_Error->__construct("DB Error: no such field", -19, 16, (Array:2), "\n SELECT civicrm_value_key_note_21.id as civicrm_value_key_note_21_id, ...")
#3 /var/www/domains/example.client.joineryhq.com/vendor/pear/pear-core-minimal/src/PEAR.php(575): DB_Error->__construct(-19, 16, (Array:2), "\n SELECT civicrm_value_key_note_21.id as civicrm_value_key_note_21_id, ...")
#4 /var/www/domains/example.client.joineryhq.com/vendor/pear/pear-core-minimal/src/PEAR.php(223): PEAR->_raiseError(Object(DB_mysqli), NULL, -19, 16, (Array:2), "\n SELECT civicrm_value_key_note_21.id as civicrm_value_key_note_21_id, ...", "DB_Error", TRUE)
#5 /var/www/domains/example.client.joineryhq.com/vendor/pear/db/DB/common.php(1928): PEAR->__call("raiseError", (Array:7))
#6 /var/www/domains/example.client.joineryhq.com/vendor/pear/db/DB/mysqli.php(936): DB_common->raiseError(-19, NULL, NULL, "\n SELECT civicrm_value_key_note_21.id as civicrm_value_key_note_21_id, ...", "1054 ** Unknown column 'civicrm_value_category_codes__new_12_12__31.brdcast_o...")
#7 /var/www/domains/example.client.joineryhq.com/vendor/pear/db/DB/mysqli.php(406): DB_mysqli->mysqliRaiseError()
#8 /var/www/domains/example.client.joineryhq.com/vendor/pear/db/DB/common.php(1234): DB_mysqli->simpleQuery("\n SELECT civicrm_value_key_note_21.id as civicrm_value_key_note_21_id, ...")
#9 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-packages/DB/DataObject.php(2696): DB_common->query("\n SELECT civicrm_value_key_note_21.id as civicrm_value_key_note_21_id, ...")
#10 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-packages/DB/DataObject.php(1829): DB_DataObject->_query("\n SELECT civicrm_value_key_note_21.id as civicrm_value_key_note_21_id, ...")
#11 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/DAO.php(454): DB_DataObject->query("\n SELECT civicrm_value_key_note_21.id as civicrm_value_key_note_21_id, ...")
#12 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/DAO.php(1565): CRM_Core_DAO->query("\n SELECT civicrm_value_key_note_21.id as civicrm_value_key_note_21_id, ...", TRUE)
#13 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/BAO/CustomGroup.php(763): CRM_Core_DAO::executeQuery("\n SELECT civicrm_value_key_note_21.id as civicrm_value_key_note_21_id, ...")
#14 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/BAO/CustomGroup.php(712): CRM_Core_BAO_CustomGroup::buildTreeEntityDataFromQuery((Array:7), "\n SELECT civicrm_value_key_note_21.id as civicrm_value_key_note_21_id, ...", (Array:6))
#15 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/BAO/CustomGroup.php(601): CRM_Core_BAO_CustomGroup::buildEntityTreeSingleFields((Array:7), 303407, (Array:79), (Array:6))
#16 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Contact/Page/View/Summary.php(43): CRM_Core_BAO_CustomGroup::getTree("Individual", (Array:2), 303407, NULL, (Array:0))
#17 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Contact/Page/View/Summary.php(71): CRM_Contact_Page_View_Summary->preProcess()
#18 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/Invoke.php(313): CRM_Contact_Page_View_Summary->run((Array:3), NULL)
#19 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/Invoke.php(69): CRM_Core_Invoke::runItem((Array:14))
#20 /var/www/domains/example.client.joineryhq.com/vendor/civicrm/civicrm-core/CRM/Core/Invoke.php(36): CRM_Core_Invoke::_invoke((Array:3))
#21 /var/www/domains/example.client.joineryhq.com/web/modules/contrib/civicrm/src/Civicrm.php(88): CRM_Core_Invoke::invoke((Array:3))
#22 /var/www/domains/example.client.joineryhq.com/web/modules/contrib/civicrm/src/Controller/CivicrmController.php(80): Drupal\civicrm\Civicrm->invoke((Array:3))
#23 [internal function](): Drupal\civicrm\Controller\CivicrmController->main((Array:3), "")
#24 /var/www/domains/example.client.joineryhq.com/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array((Array:2), (Array:2))
#25 /var/www/domains/example.client.joineryhq.com/web/core/lib/Drupal/Core/Render/Renderer.php(573): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
#26 /var/www/domains/example.client.joineryhq.com/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(124): Drupal\Core\Render\Renderer->executeInRenderContext(Object(Drupal\Core\Render\RenderContext), Object(Closure))
#27 /var/www/domains/example.client.joineryhq.com/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext((Array:2), (Array:2))
#28 /var/www/domains/example.client.joineryhq.com/vendor/symfony/http-kernel/HttpKernel.php(151): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
#29 /var/www/domains/example.client.joineryhq.com/vendor/symfony/http-kernel/HttpKernel.php(68): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1)
#30 /var/www/domains/example.client.joineryhq.com/web/core/lib/Drupal/Core/StackMiddleware/Session.php(57): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#31 /var/www/domains/example.client.joineryhq.com/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(47): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#32 /var/www/domains/example.client.joineryhq.com/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#33 /var/www/domains/example.client.joineryhq.com/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\page_cache\StackMiddleware\PageCache->pass(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#34 /var/www/domains/example.client.joineryhq.com/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(47): Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#35 /var/www/domains/example.client.joineryhq.com/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(52): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#36 /var/www/domains/example.client.joineryhq.com/vendor/stack/builder/src/Stack/StackedHttpKernel.php(23): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#37 /var/www/domains/example.client.joineryhq.com/web/core/lib/Drupal/Core/DrupalKernel.php(708): Stack\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, TRUE)
#38 /var/www/domains/example.client.joineryhq.com/web/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request))
#39 {main}