web-dev-qa-db-fra.com

Erreur lors de la création de la clé étrangère de MySQL Workbench

J'essaie de synchroniser les changements de schéma de MySQL Workbench à ma base de données. Je reçois l'erreur suivante quand il essaie de créer une clé étrangère:

Executing SQL script in server
ERROR: Error 1005: Can't create table 'tomato.#sql-2730_1b8' (errno: 121)

Voici la déclaration qu'il tente d'exécuter:

ALTER TABLE `tomato`.`ing_allergy_ingredient` 
ADD CONSTRAINT `fk_ai_allergy`
FOREIGN KEY (`allergy_id` )
REFERENCES `tomato`.`ing_allergy` (`allergy_id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION

Des idées ce que cette erreur signifie?

9
BenV

Vous obtiendrez ce message si vous essayez d'ajouter une contrainte avec un nom déjà utilisé ailleurs.

Selon cela POST Vous pouvez vérifier votre contrainte comme celle-ci:

Si la table que vous essayez de créer inclut une contrainte de clé étrangère et que vous avez fourni votre propre nom pour cette contrainte, rappelez-vous qu'il doit être unique dans la base de données. Exécutez cette requête pour voir si ce nom est utilisé quelque part:

SELECT
  constraint_name,
  table_name
FROM
  information_schema.table_constraints
WHERE
  constraint_type = 'FOREIGN KEY'
  AND table_schema = DATABASE()
ORDER BY
  constraint_name;
11
Am1rr3zA