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)
Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top