Originariamente inviato da cat82
Posto l'errore:
"ERROR 1005 (HY000): Can't create table './Contact/ic_rubrica.frm' (errno: 150)
"
Domanda:
1) Forse ho sbagliato a definire le chiavi esterne in MySqlYog?E se si qual'è il modo corretto di crearle?
1) Dipende anche dall'ordine in cui le tabelle vengono create, spesso mi è capitato che un dump non conservasse l'ordine corretto in relazione alla dipendenza che si crea con le foreign key.
Ogni tabella Y, che ha una foreign key a una tabella X, va creata dopo aver già creato la tabella X.
Controlla che ic_rubrica non si riferisca a una tabella non ancora creata.
2) Gli attributi della tabella referente (Y nel caso di sopra) su cui definisci una foreign Key, devono avere lo stesso tipo degli attributi riferiti, può capitare ad esempio di mettere UNSIGNED in un attributo e dimenticarsi di riportarlo anche all'altro attributo.
2)Qualcuno sa come creare i riferimenti delle chiavi esterne direttamente in mysql? Per esempio ho due tabelle: 'ic_campo' e 'ic_nome_oggetto'.In 'ic_campo' vi è una campo chiamato ID_nome_oggetto che è la chiave esterna dell'entità
che usa la chiave primaria di 'ic_nome_oggetto'.
Vi ringrazio per l'aiuto.Ciao
codice:
CREATE TABLE ic_nome_oggetto (
ID_nome_oggetto INT PRIMARY KEY
) TYPE=InnoDB;
CREATE TABLE ic_campo(
ID_nome_oggetto INT,
FOREIGN KEY(ID_nome_oggetto) REFERENCES ic_nome_oggetto(ID_nome_oggetto)
) TYPE=InnoDB;