Dit is slechts een gok, aangezien u uw schema niet heeft opgegeven, maar is een van de kolommen in uw unieke sleutel nullable?
Bewerken:
Zoals @G-Nugget in de opmerkingen zegt, heb je een unieke sleutel nodig op de betreffende kolommen:
http://dev.mysql.com/doc /refman/5.6/en/insert-on-duplicate.html
U moet een unieke sleutel hebben voor de combinatie van kolommen die uniek moet zijn.
bijv.:
ALTER TABLE yourTable ADD UNIQUE KEY (`canid`, `categoryid`);
Voeg bij het stellen van databasevragen ook SHOW CREATE TABLE
toe voor de betreffende tabellen.