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)
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top