2014-05-11 4 views
2

La table référencée est 'groupe' (InnoDB).Erreur Mysql: 1215 Impossible d'ajouter une contrainte de clé étrangère

Il possède une colonne 'id' définie comme INT (11), non annulable, incrémentation automatique, la clé primaire

table de référence est de l'utilisateur (InnoDB)

Il a 'colonne group_id' défini comme étant INT (11), non nullable.

Dans le tableau référencement est déjà un index unique basé sur la colonne 'group_id'

Mais WHN exécution

ALTER TABLE `user` 
    ADD CONSTRAINT `user_group` FOREIGN KEY (`group_id`) REFERENCES `group` (`id`) 
     ON DELETE CASCADE 
     ON UPDATE CASCADE 

Je suis une erreur

error: 1215 Cannot add foreign key constraint

-je ajouter la décharge db

CREATE TABLE IF NOT EXISTS `groups` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `name` varchar(255) NOT NULL, 
    `language` varchar(255) NOT NULL, 
    `order` int(11) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 

CREATE TABLE IF NOT EXISTS `user` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `group_id` int(11) NOT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `group_id` (`group_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 

Liste de vérification

  1. Est-ce que Db InnoDB? Oui
  2. Est-ce que toutes les tables InnoDB? Oui
  3. L'index unique est-il présent sur le tableau de référence? Oui
  4. Sont référencés et référencés la colonne exactement du même type? Oui

La question est simple: Pourquoi ne puis-je pas créer cette clé étrangère?

MISE À JOUR 1: J'essayé de remplacer avec SUPPRIMER CASCADE ON ON SUPPRIMER Réglementer et rien ne change, aussi j'ai essayé de supprimer ON SUPPRIMER et ON UPDATE un rien ne change

Répondre

3

vous manqués s dans votre nom de la table.

changer cette

REFERENCES `group` (`id`) 

à

REFERENCES `groups` (`id`) 

DEmo

+0

1: Pourquoi? 2. J'ai essayé avec delete (c'est plus utile si je ne peux pas supprimer des groupes non vides), mais j'ai la même erreur 3: Même en supprimant ON DELETE et ON UPDATE le problème est toujours là, impossible de créer – realtebo

+0

vérifier ma réponse éditée. –

+0

:(Merci .. Je n'ai jamais vraiment utilisé la fin 's' dans le nom de la table ... – realtebo

Questions connexes