Erreur de création de clé étrangère de MySQL Workbench
-
16-10-2019 - |
Question
Je suis en train de synchroniser les modifications du 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 essaie 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
Toutes les idées ce que cela signifie d'erreur?
La solution
Vous obtiendrez ce message si vous essayez d'ajouter une contrainte avec un nom qui est déjà utilisé ailleurs.
D'après ce après que vous pouvez vérifier votre contrainte comme ceci:
Si la table que vous essayez de créer comprend 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 quelque part d'utilisation:
SELECT
constraint_name,
table_name
FROM
information_schema.table_constraints
WHERE
constraint_type = 'FOREIGN KEY'
AND table_schema = DATABASE()
ORDER BY
constraint_name;