Development issueshttps://lab.civicrm.org/groups/dev/-/issues2021-09-03T23:02:02Zhttps://lab.civicrm.org/dev/core/-/issues/2815Can't cancel a non-CiviMail email2021-09-03T23:02:02ZJonGoldCan't cancel a non-CiviMail emailIs this a regression? Yes. Is it from March 2020? Also yes, so I don't think it gets the "regression" tag.
### Steps to Replicate
* From a contact record, click on someone's email address to start an email.
* Change your mind, press *...Is this a regression? Yes. Is it from March 2020? Also yes, so I don't think it gets the "regression" tag.
### Steps to Replicate
* From a contact record, click on someone's email address to start an email.
* Change your mind, press **Cancel**
### Expected Behavior
You're returned to the contact record.
### Actual Behavior
The same screen reloads, the button press is basically ignored.
`git bisect` blames commit a1b37126ebd627ce2dc423bea1a21e837c783f36. That's PR #16913, aka Civi 5.25.
This isn't exactly a priority, but I thought I'd log it.https://lab.civicrm.org/dev/core/-/issues/2814Stop using replaceContactTokens in core2021-12-20T21:55:11ZeileenStop using replaceContactTokens in coreAs of a 6 months ago, or so, we had resolved all differences between using the token processor and replaceContactTokens to ....replaceContactTokens.
We don't quite have the api yet but when complete it is pretty much a drop in replaceme...As of a 6 months ago, or so, we had resolved all differences between using the token processor and replaceContactTokens to ....replaceContactTokens.
We don't quite have the api yet but when complete it is pretty much a drop in replacement for
```
$url = CRM_Core_BAO_MessageTemplate::renderTemplate([
'messageTemplate' => ['msg_text' => $this->_postURL],
'contactId' => $this->_id,
'disableSmarty' => TRUE,
])['text'];
```
Calling `renderTemplate` directly is supported provided
1) it is only done from core and
2) there is test cover for each instance
We don't have that many places left so I'm going to push through & replace them.
The last place in core is the token processor itself. I intend to cut that dependency last & duplicate the code in some way onto the processor.
While not supported from outside of core `replaceContactTokens` IS called from a number of places. We are also firming up the new token api so I don't want to 'hustle' people to change their code until it's bedded in so I propose to deprecate quietly at this stage (`@deprecated` on the function but don't make it 'noisy' for a few more months)https://lab.civicrm.org/dev/core/-/issues/2813"Soft Credit Only" Contribution export screen and exported data don't match2023-09-22T05:03:27Zalicefrumin"Soft Credit Only" Contribution export screen and exported data don't matchOverview
----------------------------------------
When Exporting Contributions from a search with the "Soft Credits Only" filter, the export screen shows the contributor information but the exported file shows the soft credited contact.
...Overview
----------------------------------------
When Exporting Contributions from a search with the "Soft Credits Only" filter, the export screen shows the contributor information but the exported file shows the soft credited contact.
Reproduction steps
----------------------------------------
1. Go to the "Find Contributions" search form (CiviCRM Admin menu -> Search -> Find Contributions)
2. For the "Contributions OR Soft Credits?" field select "Soft Credits Only"
3. Click Search
4. Select All records
5. Select the Action "export contributions"
6. pick the "Select fields for Export" option and click "Continue"
7. Add a "First Name" Field
8. Click "Download File"
Current behaviour
----------------------------------------
The export screen shows the first name of the Contributor
The export file shows the first name of the person who is soft credited
Expected behaviour
----------------------------------------
The export screen and exported file should display the same information. Because the filter is for "Soft Credit Only" I would expect they would both show the soft credit contact.
Environment information
----------------------------------------
I was able to recreate this on https://dmaster.demo.civicrm.org/
* __CiviCRM: 5.43.alpha1
* __CMS:drupalhttps://lab.civicrm.org/dev/core/-/issues/2812CiviCRM 5.41.0 - WSOD crash with error PHP message: PHP Fatal error: Uncaught...2021-09-16T10:28:05Zjustinfreeman (Agileware)CiviCRM 5.41.0 - WSOD crash with error PHP message: PHP Fatal error: Uncaught Error: Class 'CRM_Contact_Form_Search_Custom_BaseWhen updating to CiviCRM 5.41.0. Site crashes (WSOD) with error, **PHP message: PHP Fatal error: Uncaught Error: Class 'CRM_Contact_Form_Search_Custom_Base**.
This is due to the **CRM_Contact_Form_Search_Custom_Base** class being moved ...When updating to CiviCRM 5.41.0. Site crashes (WSOD) with error, **PHP message: PHP Fatal error: Uncaught Error: Class 'CRM_Contact_Form_Search_Custom_Base**.
This is due to the **CRM_Contact_Form_Search_Custom_Base** class being moved to the **legacycustomsearches** (core distributed) extension which is not enabled.
A CiviCRM site which has any of the following extensions installed (this is not an exhaustive list) would be impacted:
- nz.co.fuzion.historicmembershipdata
- uk.co.vedaconsulting.gdpr
- org.civicoop.recurringcontributionsearch
- org.civicoop.dataprocessor
Any extension that extends CRM_Contact_Form_Search_Custom_Base would be impacted by this issue.
**Workaround**
The workaround for this issue would be:
1. Before the upgrade
1. Disable each of the extensions that extends CRM_Contact_Form_Search_Custom_Base
1. Perform the upgrade
1. Enable the legacycustomsearches extension
1. Re-enable each of the extensions that extends CRM_Contact_Form_Search_Custom_Base
Agileware Ref: CIVIBLD-2755.41.1https://lab.civicrm.org/dev/drupal/-/issues/163Session erroneously getting set to NULL on Drupal user login2021-11-11T23:32:18ZsteveplatzSession erroneously getting set to NULL on Drupal user loginAnonymous sessions may contain data that needs to be retained after login, for example commerce cart data. In the initialize() method of the core session class civicrm/civicrm-core/CRM/Core/Session.php, there is a check for a changed ses...Anonymous sessions may contain data that needs to be retained after login, for example commerce cart data. In the initialize() method of the core session class civicrm/civicrm-core/CRM/Core/Session.php, there is a check for a changed session id, which if it evaluates to TRUE will set a current session with data to NULL.
```php
// remove $_SESSION reference if session is changed
if (($sid = session_id()) !== $this->sessionID) {
$this->_session = NULL;
$this->sessionID = $sid;
}
```
I've tested this with Drupal 9.2.4 CiviCRM 5.35 and Drupal Commerce 2.26. This specific change was added in https://lab.civicrm.org/dev/drupal/-/issues/98 for Drupal 7.5.43.0https://lab.civicrm.org/dev/core/-/issues/2810CiviCRM A/B Mailing feature broken. CiviCRM now only sends Mailing A to all R...2021-09-18T01:29:49Zjustinfreeman (Agileware)CiviCRM A/B Mailing feature broken. CiviCRM now only sends Mailing A to all Recipients, not a percentage of the recipients. Mailing B and Final Mailing are not sent, they have zero recipients.CiviCRM A/B Mailing feature broken. CiviCRM now only sends Mailing A to all Recipients, not a percentage of the recipients. Mailing B and Final Mailing are not sent, they have zero recipients..
Regardless of whether the Final Mailing is...CiviCRM A/B Mailing feature broken. CiviCRM now only sends Mailing A to all Recipients, not a percentage of the recipients. Mailing B and Final Mailing are not sent, they have zero recipients..
Regardless of whether the Final Mailing is based on Mailing A or Mailing B, **no recipients are set** and the Final Mailing is not sent.
Using CiviCRM 5.40.4
Below is a series of screenshots of each step in the process.
Selecting the target group percentage.
![Screenshot_20210901_162830](/uploads/25ec6235f5b254f2ff7ce5182fd5a0e9/Screenshot_20210901_162830.png)
Mailing A and B scheduled.
![Screenshot_20210901_162944](/uploads/1a60aecd10487b95098cbb9614f7ff95/Screenshot_20210901_162944.png)
Mailing A and B sent.
![Screenshot_20210901_163011](/uploads/b8cac068f85033a31b147794c90d306c/Screenshot_20210901_163011.png)
Final mailing selected and sent.
![Screenshot_20210901_163602](/uploads/6bebe6684f90270063341ac1940aae8d/Screenshot_20210901_163602.png)
Related https://github.com/civicrm/civicrm-core/pull/20093 and dev/core#2100
Agileware Ref: CIVICRM-1828https://lab.civicrm.org/dev/core/-/issues/2809Profile error - requested Profile is disabled OR2024-01-28T05:03:32ZcweddellProfile error - requested Profile is disabled ORWe're seeing recurring errors when trying to complete registration using various Profiles:
"The requested Profile (gid=XX) is disabled OR it is not configured to be used for 'Profile' listings in its Settings OR there is no Profile wit...We're seeing recurring errors when trying to complete registration using various Profiles:
"The requested Profile (gid=XX) is disabled OR it is not configured to be used for 'Profile' listings in its Settings OR there is no Profile with that ID OR you do not have permission to access this profile."
All the relevant ACL permissions are in place - Register for event, Profile edit/create/view/access custom data.
Creating new profiles (with no custom fields) makes no difference.
Others have found found they only encounter the Profile error if the event has "Send Confirmation Email?" turned ON in Online Registration. If the email is turned off, I don't see the error.
This has not solved it for me, though it appears data is saved when the form is submitted, but emails are not sent (the error is thrown).
https://chat.civicrm.org/civicrm/pl/r6ucwf994brotgiaa87gjjx5jo
https://civicrm.stackexchange.com/questions/40119/profile-error-requested-profile-is-disabled-or
* Browser: not browser dependent - same error while using Firefox 91.0 / Chrome 93.0.4577.42 / Safari 14.1.2
* CiviCRM: probably started 5.35.2 (ish), still happening 5.40.4
* PHP: 7.3.27
* CMS: WordPress 5.7 & 5.8
* Database: mySQL 5.7.31
* Web Server: Apache 2.4.48Monish DebMonish Debhttps://lab.civicrm.org/dev/core/-/issues/2808Profiles in Search mode in chrome browsers caching search criteria2023-09-17T05:03:15ZalicefruminProfiles in Search mode in chrome browsers caching search criteriaOverview
----------------------------------------
Profiles in Search mode in chrome browsers caching search criteria.
Reproduction steps
----------------------------------------
1. Open a chrome browser
2. Create a Profile to be used ...Overview
----------------------------------------
Profiles in Search mode in chrome browsers caching search criteria.
Reproduction steps
----------------------------------------
1. Open a chrome browser
2. Create a Profile to be used for search listings
3. Include state and country as search fields
4. Go to the profile in search mode
5. select a country and state, click search
6. click the browser back button
7. Do not repopulate the search criteria (both fields should be empty),
8. Click Search
Current behaviour
----------------------------------------
state and country selected in step 5 are still searched for Additionally, if in step 7 you can select a country but you cannot select a new state.
Expected behaviour
----------------------------------------
Search should be empty
Environment information
----------------------------------------
* __Browser: Chrome
* __CiviCRM: Master
* __CMS: WordPress (and Drupal)
NOTE: I was able to recreate this on wpmaster.demo.civicrm.org and dmaster.demo.civicrm.orghttps://lab.civicrm.org/dev/core/-/issues/2807Contribution thank-you letters give Undefined index: contribution when you do...2021-08-31T21:40:26ZDaveDContribution thank-you letters give Undefined index: contribution when you don't have any contribution tokens in the message1. Search for contributions.
1. From actions choose thank-you letter.
1. Don't use any contribution tokens in the message.
```
0 ...\CRM\Contribute\BAO\Contribution.php(5121): "Undefined index: contribution"
1 ...\CRM\Contribute\Form\Ta...1. Search for contributions.
1. From actions choose thank-you letter.
1. Don't use any contribution tokens in the message.
```
0 ...\CRM\Contribute\BAO\Contribution.php(5121): "Undefined index: contribution"
1 ...\CRM\Contribute\Form\Task\PDFLetter.php(311): CRM_Contribute_BAO_Contribution::getContributionTokenValues("69", (Array:0))
2 ...\CRM\Contribute\Form\Task\PDFLetter.php(192): CRM_Contribute_Form_Task_PDFLetter->buildContributionArray(NULL, (Array:1), (Array:0), FALSE, FALSE, (Array:0), "CRM_Contribution_Form_Task_PDFLetterCommon", "****~~~~", FALSE)
3 ...\CRM\Core\Form.php(527): CRM_Contribute_Form_Task_PDFLetter->postProcess()
4 ...\CRM\Core\QuickForm\Action\Upload.php(152): CRM_Core_Form->mainProcess()
5 ...\CRM\Core\QuickForm\Action\Upload.php(119): CRM_Core_QuickForm_Action_Upload->realPerform(Object(CRM_Contribute_Form_Task_PDFLetter), "upload")
6 ...\packages\HTML\QuickForm\Controller.php(203): CRM_Core_QuickForm_Action_Upload->perform(Object(CRM_Contribute_Form_Task_PDFLetter), "upload")
7 ...\packages\HTML\QuickForm\Page.php(103): HTML_QuickForm_Controller->handle(Object(CRM_Contribute_Form_Task_PDFLetter), "upload")
8 ...\CRM\Core\Controller.php(352): HTML_QuickForm_Page->handle("upload")
9 ...\CRM\Core\Invoke.php(313): CRM_Core_Controller->run((Array:3), NULL)
10 ...\CRM\Core\Invoke.php(69): CRM_Core_Invoke::runItem((Array:14))
11 ...\CRM\Core\Invoke.php(36): CRM_Core_Invoke::_invoke((Array:3))
12 ...\drupal\civicrm.module(458): CRM_Core_Invoke::invoke((Array:3))
13 ...\includes\menu.inc(527): civicrm_invoke("contribute", "task")
14 ...\index.php(21): menu_execute_active_handler()
15 {main}
```5.41.0https://lab.civicrm.org/dev/core/-/issues/2806Contribution custom field tokens are duplicated in the dropdown2021-09-01T23:18:32ZDaveDContribution custom field tokens are duplicated in the dropdownAlso there are a bunch showing up that say "Machine name: xxx".
1. Make a custom field for contributions.
1. Do a search for contributions.
1. From the actions choose thank-you letters.
1. Look in the tokens dropdown. There's duplicates...Also there are a bunch showing up that say "Machine name: xxx".
1. Make a custom field for contributions.
1. Do a search for contributions.
1. From the actions choose thank-you letters.
1. Look in the tokens dropdown. There's duplicates for the custom field and some "Machine Name" entries.
The custom fields seems to be only in master but the machine name stuff is in 5.41.5.42.0https://lab.civicrm.org/dev/core/-/issues/2805Field transformations2023-09-27T05:03:14ZeileenField transformationsField transformation options for money field don't make sense
Rounding would make sense
![image](/uploads/3266f956bb062d11d3b574fc6ebad623/image.png)Field transformation options for money field don't make sense
Rounding would make sense
![image](/uploads/3266f956bb062d11d3b574fc6ebad623/image.png)https://lab.civicrm.org/dev/core/-/issues/2804Field transformations - Upper messes with option value result2023-09-15T05:03:24ZeileenField transformations - Upper messes with option value resultGender renders as 'Male' but if I use UPPER field transform it renders as 1
![image](/uploads/ed6906369628db8055b86f9396177213/image.png)Gender renders as 'Male' but if I use UPPER field transform it renders as 1
![image](/uploads/ed6906369628db8055b86f9396177213/image.png)https://lab.civicrm.org/dev/core/-/issues/2803Field transformations - not null2023-09-15T05:03:24ZeileenField transformations - not nullIn reviewing the updates in https://github.com/civicrm/civicrm-core/pull/21320 I feel that 'IS NULL' should be complemented by 'IS NOT NULL'
In this screen shot I feel people would want a yes, potentially, when marriage date is not null...In reviewing the updates in https://github.com/civicrm/civicrm-core/pull/21320 I feel that 'IS NULL' should be complemented by 'IS NOT NULL'
In this screen shot I feel people would want a yes, potentially, when marriage date is not null (& I guess no or blank if it is)
![image](/uploads/81a65afacf7a90375824aa653aae3f4b/image.png)https://lab.civicrm.org/dev/core/-/issues/2802Cancel button on email form gives validation errors2021-09-01T00:07:31ZDaveDCancel button on email form gives validation errors1. From the Contacts menu choose New Email.
2. Don't enter anything just click cancel.
3. => Validation errors.1. From the Contacts menu choose New Email.
2. Don't enter anything just click cancel.
3. => Validation errors.https://lab.civicrm.org/dev/core/-/issues/2801Scheduled Job, fetch_bounces with is_create_activities=1 parameter. CiviCRM d...2024-03-15T21:10:52Zjustinfreeman (Agileware)Scheduled Job, fetch_bounces with is_create_activities=1 parameter. CiviCRM does not unsubscribe a Contact when receiving an email to the verb unsubscribe email addressScheduled Job, fetch_bounces with is_create_activities=1 parameter. CiviCRM does not unsubscribe a Contact when receiving an email to the verb unsubscribe email address. As a result, **Contacts are not being unsubscribed when this reques...Scheduled Job, fetch_bounces with is_create_activities=1 parameter. CiviCRM does not unsubscribe a Contact when receiving an email to the verb unsubscribe email address. As a result, **Contacts are not being unsubscribed when this request is received via email**. This contravenes Australian Anti-Spam Law (Spam ACT 2003).
The current behaviour is that the Scheduled Job, fetch_bounces with is_create_activities=1 parameter creates a new Contact ("Unsubscribe" Contact) using the verb unsubscribe email address which is incorrect. An Inbound Email Activity is then created and associated with this new Contact. The Activity is created and assigned to the emailed Contact that should be unsubscribed.
The emailed Contact is not unsubscribed from the mailing list and no unsubscribe event is recorded. So further emails will be sent to this Contact, despite their explicit unsubscribe request.
The expected behaviour is that:
1. CiviCRM looks up the emailed Contact using the unsubscribe email address and then creates the Inbound Email Activity for that Contact. No new contact is required.
2. The Contact that should be unsubscribed from the mailing list.
Related https://lab.civicrm.org/dev/core/-/issues/2800
Agileware Ref: CIVICRM-1826
CiviCRM 5.40.1https://lab.civicrm.org/dev/core/-/issues/2800Scheduled Job, fetch_bounces with is_create_activities=1 parameter creates a ...2023-10-05T00:59:49Zjustinfreeman (Agileware)Scheduled Job, fetch_bounces with is_create_activities=1 parameter creates a new Contact using the Return-path email address which is incorrectScheduled Job, fetch_bounces with is_create_activities=1 parameter creates a new Contact ("Return-path" Contact) using the Return-path email address which is incorrect. An Inbound Email Activity is then created and associated with this n...Scheduled Job, fetch_bounces with is_create_activities=1 parameter creates a new Contact ("Return-path" Contact) using the Return-path email address which is incorrect. An Inbound Email Activity is then created and associated with this new Contact.
The expected behaviour is that CiviCRM looks up the **emailed Contact using the Return-path address** and then creates the Inbound Email Activity for that Contact. No new contact is required.
The impact of problem is that:
1. a lot of "Return-path" Contacts are created which confuses CiviCRM users, "who are these contacts? how did they get here? have we been hacked?"
2. a CiviCRM admin needs to manually read each Inbound Email Activity to figure out what contact it actually relates too
3. the "Return-path" Contacts need to be deleted as they serve no real purpose
4. this is a performance hit when sending out large mailings, as CiviCRM is also creating Contacts and Activities as bounce emails are processed.
It does appear that the emailed Contact is being correctly detected as bounced, as it appears in the bounced contacts report for the Mailing.
Possibly related to this documentation issue, https://lab.civicrm.org/documentation/docs/sysadmin/-/issues/217
Agileware Ref: CIVICRM-1778
CiviCRM 5.40.15.66.0https://lab.civicrm.org/dev/core/-/issues/2799Activity import: allow multivalue custom data2022-06-11T00:07:25ZMichael McAndrewActivity import: allow multivalue custom dataBefore: the current activity import does not allow the import of multi value custom data.
If I have a favourite primary colours field, I could not import a CSV with the a column for this field with the value `Red, Blue`. It would look f...Before: the current activity import does not allow the import of multi value custom data.
If I have a favourite primary colours field, I could not import a CSV with the a column for this field with the value `Red, Blue`. It would look for the entire string `Red, Blue` and complain that `Red, Blue` is not a primary colour.
After: we can now import multi value custom data using the comma as a separator.
The proposed patch explodes any _multi valued_ custom data fields on the `,` character.
Note that this does not stop people from using commas in labels of custom data fields. It just means that if people want to make use of the importer to import multi value custom data, they will need to ensure that their labels don't have any commas in them.
Saying the same thing again using some different words...
We are assuming that if people want to import multi value custom data then they will use a comma seperator to seperate fields and understand that any labels will not contain commas as a result.
This feel fairly reasonable to me.5.51.0https://lab.civicrm.org/dev/core/-/issues/2798activity import: better labels for custom fields2021-09-03T00:15:28ZMichael McAndrewactivity import: better labels for custom fieldsPreviously, in the activity import, the dropdown that allowed you to select the field that you want to map a csv column to did not include the custom group title when listing custom fields. This lead to a usability issue in data models w...Previously, in the activity import, the dropdown that allowed you to select the field that you want to map a csv column to did not include the custom group title when listing custom fields. This lead to a usability issue in data models where custom field titles are repeated across groups and there is no way of distinguishing these fields in the import UI.
With this patch, custom field group titles are prepended to field title like this: `Custom group title :: custom field title`.
This has the nice side effect that custom fields are grouped by custom group.
Also, it brings it inline with the behaviour of the contact import (win!)
See also https://github.com/eileenmcnaughton/nz.co.fuzion.csvimport/issues/37 for a similar issue fixed in the @eileen's csv api import extension.5.43.0https://lab.civicrm.org/dev/core/-/issues/2797Import: do not attempt to validate multivalue custom reference fields2021-08-31T08:24:58ZMichael McAndrewImport: do not attempt to validate multivalue custom reference fieldsThe importer validates the options submitted for all custom fields that allow multiple values ("checkboxes and multiselect", according to a code comment). It does this by checking for serialize=1 in the custom field definition and runnin...The importer validates the options submitted for all custom fields that allow multiple values ("checkboxes and multiselect", according to a code comment). It does this by checking for serialize=1 in the custom field definition and running a [validation routine](https://github.com/civicrm/civicrm-core/blob/master/CRM/Contact/Import/Parser/Contact.php#L1075-L1091).
However, we are now setting serialize = 1 for contact reference fields as part of work to allow multivalue contact reference fields. The validation routine is now being attempted on contact reference fields, but it is not designed for this type of field.
A simple solution (proposed) is to not attempt to run this validation routine on contact reference fields.5.42.0https://lab.civicrm.org/dev/core/-/issues/2792MySQL limitation causes fatal error in managing custom fields and in viewing ...2023-09-17T05:03:16ZAllenShawMySQL limitation causes fatal error in managing custom fields and in viewing contacts; when custom group has more than 62 "is_searchable = yes" fieldsOverview
----------------------------------------
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 cus...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:
1. The "create custom field" form submission fails with a fatal error.
2. 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.
3. 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"):
1. Create a new custom group; note the entity to which this group applies; in this example we'll use "All contacts"
1. 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.)
1. 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` :![fatal-field](/uploads/f39c1a6ac743ba16281a51f274d69352/fatal-field.png)
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",
]);
```
4. 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.
5. 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`: ![fatal-delete](/uploads/dde828c860265080181e12c4c526ec91/fatal-delete.png)
6. 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`: ![fatal-contact](/uploads/17ff7a000b47ca55a2e57d1c1b8cd78d/fatal-contact.png)
Workaround to allow contacts to be viewed again without fatal error:
1. 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
1. 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.
1. 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`
1. **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.**
1. 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).
1. 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}
```