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.

È stato utile?

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.

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