L'ajout de Clé Étrangère Échoue dans MySQL (errno 150)

J'ai lu bien d'autres postes sur la réception de MySQL errno 150 lorsque vous essayez d'ajouter une clé étrangère copnstraint, cependant je n'ai pas trouvé de solution pour le moment. J'espère que je ne vais pas faire quelque chose de stupide. J'ai fait un simple test.

  1. Les deux tables InnoDB.
  2. Les deux tables sont en UTF-8.
  3. les Deux colonnes sont de type int(11) unsigned (prise de color_id NOT NULL ne fait pas de différence). (EDIT: je me suis trompé à CE SUJET, ET C'ÉTAIT LA SOLUTION)

    Voici mes deux tables:

Table widgets:

CREATE TABLE `widgets` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL DEFAULT '',
`color_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Table colors:

CREATE TABLE `colors` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(10) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Je viens de créer ces tables, il n'y a pas de contenu. Lorsque j'essaie d'ajouter une contrainte de clé étrangère pour relier les widgets.color_id de couleurs.id, ce qui se passe:

mysql> ALTER TABLE `widgets` ADD FOREIGN KEY (`color_id`) REFERENCES `color` (`id`);

ERROR 1005 (HY000): Can't create table 'production.#sql-7b1_2dd7' (errno: 150)

Je vais juste ajouter que je n'ai pas été en mesure d'utiliser mon outil de choix, Sequel Pro sous OSX -- soit. Je reçois le même message d'erreur lorsque vous essayez de créer une relation de clé étrangère.

SHOW ENGINE INNODB STATUS retourne ceci:

130531 17:23:06 Error in foreign key constraint of table production/#sql-7b1_2c80: 
FOREIGN KEY (`color_id`) REFERENCES `colors` (`id`): Cannot find an index in 
the referenced table where the referenced columns appear as the first columns, 
or column types in the table and the referenced table do not match for constraint.

Suis-je en train de faire quelque chose de ridiculement stupide??

OriginalL'auteur Raolin | 2013-05-31