Se connecter avec
S'enregistrer | Connectez-vous

[MySQL] Problème de clef étrangère (erreur 150)

Dernière réponse : dans Programmation

Bonjour à tous.

J'ai un problème avec la fameuse erreur 150, de malformation de clef étrangère, et je n'arrive pas à trouver l'erreur.

Voici le descriptif de mes deux tables.
  1. CREATE TABLE `codes_categorie_questions` (
  2. `categorie_id` tinyint(2) NOT NULL auto_increment,
  3. `categorie_label` varchar(255) NOT NULL default '',
  4. PRIMARY KEY (`categorie_id`)
  5. ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=17 ;

  1. CREATE TABLE `annuaire_questions` (
  2. `id_question` int(11) NOT NULL auto_increment,
  3. `id_categorie` tinyint(2) unsigned NOT NULL,
  4. `question_titre` text NOT NULL,
  5. `question_texte` text NOT NULL,
  6. PRIMARY KEY (`id_question`)
  7. ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=117 ;

Et voilà ma requête de création de ma contrainte.
  1. ALTER TABLE `annuaire_questions`
  2. ADD CONSTRAINT `fk_categorie_question`
  3. FOREIGN KEY ( `id_categorie` )
  4. REFERENCES `codes_categorie_questions` ( `categorie_id` )
  5. ON UPDATE CASCADE
  6. ON DELETE CASCADE ;

Les deux tables sont bien en InnoDB, les champs id_categorie et categorie_id sont bien des tinyint(2) non signés. Je ne sais pas où se situe mon erreur. Si quelqu'un pouvait me dépanner, cela serait fort sympathique. :) 

Merci beaucoup !
Lassé par la pub ? Créez un compte
Lassé par la pub ? Créez un compte
Tom's guide dans le monde