To tylko przypuszczenie, ponieważ nie podałeś schematu, ale czy jedna z kolumn w Twoim unikalnym kluczu może mieć wartość null?
Edytuj:
Jak mówi @G-Nugget w komentarzach, potrzebujesz unikalnego klucza w danych kolumnach:
http://dev.mysql.com/doc /refman/5.6/en/insert-on-duplicate.html
Musisz mieć unikalny klucz w kombinacji kolumn, które powinny być unikalne.
np.:
ALTER TABLE yourTable ADD UNIQUE KEY (`canid`, `categoryid`);
Ponadto, zadając pytania dotyczące bazy danych, dołącz SHOW CREATE TABLE
dla odpowiednich tabel.