erreur dans l'ajout de clé étrangère
-
24-10-2019 - |
Question
J'ai deux tableaux: tab1,tab2
Je veux ajouter une clé étrangère à tab2 et écrit cette requête
ALTER TABLE tab2
ADD FOREIGN KEY(name) REFERENCES tab1(name)
Mais je reçois cette erreur:
error 1005(HY000):can't create table 'club.#sql-6f0_2' (errno:150)
Quel est le problème?
Edit
i write this tables only for test.
tab1
name char(20) private key
lname char(20)
tab2
ssn int private key
name char(20)
La solution
J'ai répondu pour vous il y a environ une heure dans un commentaire sur votre autre question, mais ici, il est à nouveau:
Vous pouvez obtenir des détails sur cette erreur en exécutant SHOW ENGINE INNODB STATUS\G
et lire la section LATEST FOREIGN KEY ERROR
.
Les raisons les plus probables de cet échec:
- tab1.name et tab2.name ne sont pas exactement le même type de données
- tab1.name n'est pas unique
Autres conseils
essayez ceci:
alter table tab2
add foreign key my_key(name) references tab1(name)
peut-être votre clé doit avoir un nom?
Vous ne pouvez pas définir des clés étrangères sur les moteurs de stockage par défaut de MySQL (ISAM, MyISAM), utilisez InnoDB comme moteur, puis ajouter des contraintes de clés étrangères.