errore durante l'aggiunta della chiave esterna
-
24-10-2019 - |
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)
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