Comment ajouter une Clé Étrangère (MySQL)

Je suis très nouveau à SQL et je suis en train de réaliser un système simple de l'instruction ALTER TABLE pour créer une nouvelle colonne et l'utiliser comme une clé étrangère pour faire référence à une simple table dans ma base de données. J'ai modifié les deux tables InnoDB

Cependant, lors de l'exécution de l'instruction ALTER TABLE de code, j'obtiens l'erreur suivante:

Error   1452    Cannot add or update a child row: 
a foreign key constraint fails (`toys`.<result 2 when 
explaining filename '#sql-6d4_6'>, CONSTRAINT 
`#sql-6d4_6_ibfk_1` FOREIGN KEY (`toy_id`) REFERENCES `toys` (`toy_id`))    

Ci-dessous sont les DESC de deux tables:

Tableau 1:

FIELD       TYPE     NULL   KEY     EXTRA
toy_id      int(11)  NO     PRI     auto_increment
toy varchar(50) YES         

Tableau 2:

FIELD       TYPE        NULL   KEY     EXTRA
boy_id      int(11)     NO     PRI      auto_increment
boy         varchar(50) YES 

Et c'est l'ALTER requête j'étais en train de réaliser:

    ALTER TABLE boys
    ADD COLUMN toy_id INT NOT NULL,
    ADD CONSTRAINT toys_toy_id_fk
    FOREIGN KEY(toy_id)
    REFERENCES toys(toy_id);

J'ai regardé partout en essayant de le comprendre, mais avec pas de chance. Merci d'avance, et merci d'être aimable à ce newbie 🙂

EDIT:

Voici le SHOW CREATE TABLE pour les deux tableaux:

TABLEAU 1:

    CREATE TABLE `toys` (
      `toy_id` int(11) NOT NULL AUTO_INCREMENT,
      `toy` varchar(50) DEFAULT NULL,
      PRIMARY KEY (`toy_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8

TABLEAU 2:

    CREATE TABLE `boys` (
      `boy_id` int(11) NOT NULL AUTO_INCREMENT,
      `boy` varchar(50) DEFAULT NULL,
      PRIMARY KEY (`boy_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
  • Supprimer le dernier ADD: ... ADD CONSTRAINT toys_toy_id_fk FOREIGN KEY(toy_id) ...
  • J'ai essayé de l'enlever AJOUTER la CONTRAINTE, et de laisser d'AJOUTER une CLÉ ÉTRANGÈRE, ainsi que de quitter AJOUTER la CONTRAINTE et de retrait "AJOUTER" avant de CLÉ ÉTRANGÈRE, mais recevez le même message d'erreur.
  • Vous pouvez poster à la sortie de SHOW CREATE TABLE toys et de SHOW CREATE TABLE boys ?
  • Absolument -- je viens de mettre à jour le post pour y inclure la SHOW CREATE TABLE pour chaque table
InformationsquelleAutor Keith | 2013-03-11