Question

Je suis en train d'ajouter une contrainte de clé étrangère via sqlyog, et d'obtenir cette erreur, même si je suis en choisir une seule source et une colonne de référence

  

S'il vous plaît sélectionner nombre égal de la source   et renvoi

Est-ce que quelqu'un sait ce que cela signifie dans ce cas? Notez que j'ai un nombre égal de colonnes de source et référence ...

Était-ce utile?

La solution

Je suis tombé sur le même problème avec SQLYog v9.01. Le message d'erreur est trompeur et la cause réelle d'une erreur peut être totalement différent.

Ce que je vérifié pour résoudre ce sont les suivants:

  • Vérifier types table engyne, devrait être à la fois InnoDB
  • Vérifiez si votre table cible est pas la même que la source.
  • Vérifiez les types de données, la longueur et la collation charset des champs référencés.
  • Si vous avez déjà des données dans vos tables vérifier sa cohérence.

Par exemple, vous devez supprimer toutes les données non liées du tableau B qui se rapporte au tableau A

 DELETE target FROM B AS target LEFT JOIN A USING(id_A) WHERE A.id_A IS NULL
  • Enfin ceux dans mon cas, je devais VIDER tables pour créer mes contraintes avec succès.

Création de contrainte manuelle dans la fenêtre de requête peut vous donner plus d'informations sur le type d'erreur.

Juste un rappel:

ALTER TABLE `B` ADD CONSTRAINT `FK_B` FOREIGN KEY (`id_A`) REFERENCES `A` (`id_A`) ON DELETE CASCADE ; 

Bonne chance!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top