Това е само предположение, тъй като не сте предоставили своята схема, но една от колоните във вашия уникален ключ може да бъде нула?
Редактиране:
Както @G-Nugget казва в коментарите, имате нужда от уникален ключ за въпросните колони:
http://dev.mysql.com/doc /refman/5.6/en/insert-on-duplicate.html
Трябва да имате уникален ключ за комбинацията от колони, които трябва да са уникални.
напр.:
ALTER TABLE yourTable ADD UNIQUE KEY (`canid`, `categoryid`);
Също така, когато задавате въпроси към базата данни, моля, включете SHOW CREATE TABLE
за въпросните таблици.