I specifically noticed this line Multiple object mappings were found for AB key AAMkADM2MDFmNGNmLWM3NmMtNGYxOS1iMDg4LWY0YjI1MGYzNjYxYQBGAAAAAABDPkLykrMnSJ1IqQdY8YscBwBYGhW8CcVeTK3joidjOJa9AAAAAAEiAABYGhW8CcVeTK3joidjOJa9AAA10vffAAA= of type itemId' which I suspected indicated that I had a duplicate somewhere in the contact database
This is how I solved it, in a terminal:
cd ~/Library/ Application\ Support/AddressBook/
grep -r MtNGYxOS1iMDg4LWY0YjI1MGYzNjYxYQBGAAAAAABDPkLykrMnSJ1IqQdY8YscBwBYGhW8CcVeTK3jo *
(this is part of the "long string" above. It was enough for me, since the search just returned one hit,
This file proved to be an SQLite DB-file. Open it with some SQLite reader. I used sqlitestudio.
In this database there is one table ZMAPPING we are interested in. Find the relevant entries in this table with some SQL
select * from zmapping where zitemid like '%AAMkADM2MDFmNGNmLWM3NmMtNGYxOS1iMDg4LWY0YjI1MGYzNjYxYQBGAAAAAABDPkLykrMnSJ1IqQdY8YscBwBYGhW8CcVeTK3joidjOJa9AAAAAAEiAABYGhW8CcVeTK3joidjOJa9AAA10vffAAA=%'
In my case this query returned two lines. Note the values in Z_PK for all returned lines. Now look in the ZMAPPING table for the rows with these Z_PK values and copy the corresponding values in the column ZADDRESSBOOKUNIQUEID. Using these copied values, go back to the terminal and run a grep
$ grep -r 8F436716-52E6-49A9-AC03-2A120B08 *
Binary file Sources/187CB027-195A-4D96-99B2-B8A546A743DC/Metadata/8F436716-52E6-49A9-AC03-2A120B083CF9:ABPerson.abcdp matches
I now did
strings on this file to find out whom's address card I was about to delete. If necessary, take note of whatever address, phone number etc you want to keep. Then delete this file.
Repeat this process for all other entries that was found (one more in my case).
Finally, delete the lines in ZMAPPING you found using the sql query. Don't forget to commit/save.
Launch the Contacts.app and recreate the deleted contact.