Fehler beim Hinzufügen von Fremdschlüssel
-
24-10-2019 - |
Frage
Ich habe zwei Tische: tab1,tab2
Ich möchte TAB2 einen fremden Schlüssel hinzufügen und diese Abfrage schrieb
ALTER TABLE tab2
ADD FOREIGN KEY(name) REFERENCES tab1(name)
Aber ich bekomme diesen Fehler:
error 1005(HY000):can't create table 'club.#sql-6f0_2' (errno:150)
Was ist falsch?
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)
Lösung
Ich habe dies vor ungefähr einer Stunde in einem Kommentar zu Ihrer anderen Frage beantwortet, aber hier ist es wieder:
Sie können Details zu diesem Fehler erhalten, indem Sie ausgeführt werden SHOW ENGINE INNODB STATUS\G
und das Lesen der LATEST FOREIGN KEY ERROR
Sektion.
Die wahrscheinlichsten Gründe für diesen Fehler:
- tab1.name und tab2.name sind nicht genau der gleiche Datentyp
- tab1.name ist nicht eindeutig
Andere Tipps
Versuche dies:
alter table tab2
add foreign key my_key(name) references tab1(name)
Vielleicht sollte Ihr Schlüssel einen Namen haben?
Sie können Fremdschlüssel für Standard -MySQL -Speichermotoren (ISAM, MYISAM) nicht definieren, InnoDB als Motor verwenden und dann fremde Schlüsselbeschränkungen hinzufügen.