Molto probabilmente hai già un vincolo con il nome iduser
o idcategory
nel tuo database. Se è così, rinomina i vincoli.
I vincoli devono essere univoci per l'intero database, non solo per la tabella specifica che stai creando/modificando.
Per scoprire dove sono attualmente in uso i vincoli è possibile utilizzare la seguente query:
SELECT `TABLE_SCHEMA`, `TABLE_NAME`
FROM `information_schema`.`KEY_COLUMN_USAGE`
WHERE `CONSTRAINT_NAME` IN ('iduser', 'idcategory');