Sto creando alcune semplici tabelle e non riesco a passare questo errore di chiave esterna e non sono sicuro del perché. Ecco lo script qui sotto.MySQL Errno 150
create TABLE Instructors (
ID varchar(10),
First_Name varchar(50) NOT NULL,
Last_Name varchar(50) NOT NULL,
PRIMARY KEY (ID)
);
create table Courses (
Course_Code varchar(10),
Title varchar(50) NOT NULL,
PRIMARY KEY (Course_Code)
);
create table Sections (
Index_No int,
Course_Code varchar(10),
Instructor_ID varchar(10),
PRIMARY KEY (Index_No),
FOREIGN KEY (Course_Code) REFERENCES Courses(Course_Code)
ON DELETE cascade
ON UPDATE cascade,
FOREIGN KEY (Instructor_ID) REFERENCES Instructors(ID)
ON DELETE set default
);
Codice errore: 1005. Non è possibile creare la tabella '336_project.sections' (errno: 150)
I miei tipi di dati sembrano identici e la sintassi sembra corretta. Qualcuno può far notare quello che non vedo qui?
Sto usando MySQL Workbench 5.2
Ciao, grazie per la tua rapida risposta. Ho provato a cambiare a SET NULL e ancora non funziona. Ho anche rimosso tutte le linee ON UPDATE/DELETE e ancora mi dà l'errore. Dovrei specificare un motore particolare da usare? – Sixers17
Ignora l'ultimo commento, l'ho risolto. Avevi ragione, ho dovuto cambiare il valore predefinito in null, ma ho anche creato indici per ogni riferimento di chiave esterna. Una volta che l'ho fatto, ha funzionato! – Sixers17
@ Sixers17 - solo per quello che sai, quando ho provato le tue istruzioni 'CREATE TABLE' qui, l'unica cosa che dovevo fare per farle funzionare era la modifica a 'ON DELETE SET NULL'. Non ho dovuto aggiungere indici. Detto questo, è una buona idea avere indici lungo i tuoi FK comunque va tutto bene :) –