Frage

Ich habe ein Problem mit einer SQL-Datenbank, die ich bin zu schaffen. Ich versuche, es zu wechseln INNODB zu verwenden, aber ich kann nicht scheinen, um die Syntax (oder möglicherweise Logik) korrekt für die Kaskadierung zu erhalten.

Hier ist ein Teil des Codes erroring . Es mag es nicht, Linie 40.

Fehlerausgang in der üblichen kryptischen (zumindest für mich) Form:

ERROR 1005 (HY000) at line 36: Can't create table './school/staff.frm' (errno: 150)

Edit:

Hier ist die ganz SQL-Datei ich bin versucht, Rohr, wenn das hilft.

War es hilfreich?

Lösung

Fremdschlüssel haben Indizes sein. ( role.name )

Versuchen Sie folgendes:

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;

Andere Tipps

Meinen Sie für die „Rolle“ Spalte Fremdschlüssel der Namen zu verwenden, anstatt die ID? Es sieht aus wie die folgende Zeile (Zeile 43):

FOREIGN KEY (role) REFERENCES role(name)

sollte:

FOREIGN KEY (role) REFERENCES role(id)

Dies führt ohne Fehler.

Alternativ kann der "staff.role" Spalte Datentyp (Linie 40, Rolle INT NOT NULL) zu CHAR (30) NOT NULL geändert werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top