I have a few contacts in CiviCRM 4.7.27 for which changes in the "edit contact" form are not saving. The update queries are being sent to MySQL correctly, but they're in a transaction which is being being ended by a ROLLBACK statement, which obviously undoes the changes.
For all other contacts, changes save just fine, with no ROLLBACK.
Example queries from a single "Save" form submission:
UPDATE civicrm_contact SET contact_type = 'Individual' , contact_sub_type = NULL , sort_name = 'jones, jennifer' , display_name = 'jennifer jones' , first_name = 'jennifer' WHERE ( civicrm_contact.id = 3198 ); UPDATE civicrm_uf_match SET domain_id = 1 , uf_id = 6839 , uf_name = 'email@example.com' , contact_id = 3198 WHERE ( civicrm_uf_match.id = 2754 ); UPDATE civicrm_group g SET cache_date = NULL, refresh_date = NULL WHERE g.cache_date <= '20180503151700'; UPDATE civicrm_setting SET value = 'LnnjD1Un' WHERE name='navigation' AND contact_id IS NOT NULL; UPDATE civicrm_contact SET email_greeting_custom = NULL , email_greeting_display = 'Dear jennifer', postal_greeting_custom = NULL , postal_greeting_display = 'Dear jennifer', addressee_custom = NULL , addressee_display = 'jennifer jones' WHERE id = 3198; ... (and lots of delete/insert on civicrm cache tables.)
How can I track down the source and cause of this ROLLBACK statement?