MySQL clé étrangère SUR DELETE SET NULL vérifiez les types de données d'erreur

Je suis en train de travailler sur une base de données normalisée, pour être sûr, j'ai voulu utiliser des clés étrangères.

Ma base de données:

CREATE TABLE `names` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(250) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`),
  KEY `name_2` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `name_id` (`name_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

La commande:

ALTER TABLE  `names` ADD FOREIGN KEY (  `name` ) REFERENCES  `temp`.`users` (
`name_id`
) ON DELETE SET NULL ON UPDATE CASCADE ;

La réponse (erreur):

Erreur lors de la création de la clé étrangère sur le nom (vérifiez les types de données)

Alors, comment résoudre ce problème?

  • Peut-être vous devriez également créer vos colonnes AUTO_INCREMENT unsigned vous n'avez pas les nombres négatifs et name_id si vous n'avez pas besoin d'une valeur négative là.