sql >> Databáze >  >> Database Tools >> MySQL Workbench

Errno 121, duplicitní klíč při zápisu nebo aktualizaci?

Je to pravděpodobně proto, že jste pojmenovali alespoň jedno omezení se stejným identifikátorem jako sloupec:

/* You already have a column named `restaurant` in this table, 
   but are naming the FK CONSTRAINT `restaurant` also... */
CONSTRAINT `restaurant`
    FOREIGN KEY (`restaurant` )
    REFERENCES `mydb`.`restaurants` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)

Pro omezení by měl být použit jiný identifikátor, například fk_restaurant jako v :

CONSTRAINT `fk_restaurant`
    FOREIGN KEY (`restaurant` )
    REFERENCES `mydb`.`restaurants` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)

A to samé v food tabulka:

  /* Name it fk_food */
  CONSTRAINT `fk_food`
    FOREIGN KEY (`food` )
    REFERENCES `mydb`.`food` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  /* Name it fk_restaurant */
  CONSTRAINT `fk_restaurant`
    FOREIGN KEY (`restaurant` )
    REFERENCES `mydb`.`restaurants` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)

To jsou jediní tři, které vidím, ale mohou být i další, které jsem vynechal.



  1. Ladění v SQL Management Studio 2012

  2. MYSQL 8.0 - nepodporovaný formát redo log

  3. Jak mohu nastavit výchozí řazení pro tabulky v PHPMyAdmin (tj. vždy primární klíč - sestupně)

  4. Interní chyba serveru (chyba HTTP 500) po instalaci phpmyadmin na určitou doménu