Domanda

Ho due tabelle: tab1,tab2

Voglio aggiungere una chiave esterna per Tab2 e ho scritto questa query

ALTER TABLE tab2
ADD FOREIGN KEY(name) REFERENCES tab1(name)

Ma ottengo questo errore:

error 1005(HY000):can't create table 'club.#sql-6f0_2' (errno:150)

Cosa c'è di sbagliato?

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)
È stato utile?

Soluzione

ho risposto questo per voi circa un'ora fa in un commento sul tuo altra domanda, ma qui è ancora una volta:

È possibile ottenere dettagli su questo errore eseguendo SHOW ENGINE INNODB STATUS\G e leggendo la sezione LATEST FOREIGN KEY ERROR.

La maggior parte dei motivi probabile dell'errore:

  • tab1.name e tab2.name non sono esattamente lo stesso tipo di dati
  • tab1.name non riguardano solo

Altri suggerimenti

provare questo:

alter table tab2
add foreign key my_key(name) references tab1(name)

Forse il vostro chiave dovrebbe avere un nome?

Non è possibile definire chiavi esterne sui motori di storage MySQL di default (ISAM, MyISAM), utilizzare InnoDB come motore, quindi aggiungere vincoli di chiave esterna.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top