INNODB Cascade Sintassi / Logic Problema
-
05-09-2019 - |
Domanda
Ho un problema con un database SQL sto creando. Sto cercando di passare sopra di utilizzare INNODB ma non riesco a ottenere la sintassi (o, eventualmente, la logica) corretto per cascata.
Ecco una parte del codice erroring . Non ama la linea 40.
uscita Problemi con la solita forma criptica (almeno per me):
ERROR 1005 (HY000) at line 36: Can't create table './school/staff.frm' (errno: 150)
Modifica:
Ecco il intero file SQL sto cercando di pipa in se funziona.
Soluzione
Le chiavi esterne devono essere indici. ( role.name )
Prova questo:
CREATE TABLE IF NOT EXISTS `role` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` char(30) NOT NULL,
`description` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `name` (`name`)
) ENGINE=InnoDB;
Altri suggerimenti
Forse cercavi per vincolo di chiave esterna nella colonna "ruolo" di essere utilizzando il nome anziché l'ID? Sembra che la seguente riga (linea 43):
FOREIGN KEY (role) REFERENCES role(name)
dovrebbe essere:
FOREIGN KEY (role) REFERENCES role(id)
Questa eseguito senza errori.
In alternativa, il tipo "staff.role" di colonna di dati (linea 40, ruolo INT NOT NULL) potrebbe essere cambiato a CHAR (30) NOT NULL.