pt-table-sync error 'cannot nibble table'

Running this on our replication master (toolkit v2.2.4):
sudo pt-table-sync --print --sync-to-master slave1 --tables=pulse.unsubscribe > /tmp/ptsync.log

results in the error:
Cannot nibble table pulse.unsubscribe because MySQL chose no index instead of the PRIMARY index at /usr/bin/pt-table-sync line 5456. while doing pulse.unsubscribe on slave1

It’s a pretty simple table, holds email addresses for unsubscribers:
CREATE TABLE unsubscribe (
email varchar(320) NOT NULL,
contact_id varchar(50) DEFAULT NULL,
unsubscribed datetime NOT NULL,
PRIMARY KEY (email(255)),
KEY unsubscribe_contact_index (contact_id)

I was able to run this command against 2 other tables in the database ‘pulse’ which had diffs found by pt-table-checksum and it worked great. This is the only table I’m having the Nibble error on. Any ideas?


You might be affected by this bug
What version of pt-table-sync you are using ? You can check via

$ pt-table-sync --version

And try with latest version of pt-table-sync and let me know how it goes.

Thank you.

Well the fix for that was released in 2.1.9, i’ve been having the error on 2.2.3