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


9

J'essaie de synchroniser les modifications de schéma de MySQL Workbench vers ma base de données. J'obtiens l'erreur suivante lorsqu'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

Des idées sur ce que signifie cette erreur?

Réponses:


11

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

Selon cet article, 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, n'oubliez pas qu'elle 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;

La clé étrangère n'est pas apparue dans cette requête, mais quand j'ai regardé la table, il y avait un index du même nom. Je pense que c'est un bug avec la synchronisation dans MySQL Workbench. J'ai téléchargé la dernière version (5.2.31) et le problème a disparu.
BenV
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.