Il est fort probable que vous ayez déjà une contrainte avec le nom iduser
ou idcategory
dans votre base de données. Renommez simplement les contraintes si c'est le cas.
Les contraintes doivent être uniques pour l'ensemble de la base de données, pas seulement pour la table spécifique que vous créez/modifiez.
Pour savoir où les contraintes sont actuellement utilisées, vous pouvez utiliser la requête suivante :
SELECT `TABLE_SCHEMA`, `TABLE_NAME`
FROM `information_schema`.`KEY_COLUMN_USAGE`
WHERE `CONSTRAINT_NAME` IN ('iduser', 'idcategory');