Ich versuche, mein neues Schema auf meinem DB-Server weiterzuentwickeln, aber ich kann nicht herausfinden, warum ich diesen Fehler erhalte. Ich habe versucht, hier nach der Antwort zu suchen, aber alles, was ich gefunden habe, besagt, dass ich entweder die DB-Engine auf Innodb einstellen oder sicherstellen soll, dass die Schlüssel, die ich als Fremdschlüssel zu verwenden versuche, Primärschlüssel in ihren eigenen Tabellen sind. Ich habe beides getan, wenn ich mich nicht irre. Könnt ihr mir sonst noch helfen?
Executing SQL script in server
ERROR: Error 1215: Cannot add foreign key constraint
-- -----------------------------------------------------
-- Table `Alternative_Pathways`.`Clients_has_Staff`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Alternative_Pathways`.`Clients_has_Staff` (
`Clients_Case_Number` INT NOT NULL ,
`Staff_Emp_ID` INT NOT NULL ,
PRIMARY KEY (`Clients_Case_Number`, `Staff_Emp_ID`) ,
INDEX `fk_Clients_has_Staff_Staff1_idx` (`Staff_Emp_ID` ASC) ,
INDEX `fk_Clients_has_Staff_Clients_idx` (`Clients_Case_Number` ASC) ,
CONSTRAINT `fk_Clients_has_Staff_Clients`
FOREIGN KEY (`Clients_Case_Number` )
REFERENCES `Alternative_Pathways`.`Clients` (`Case_Number` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Clients_has_Staff_Staff1`
FOREIGN KEY (`Staff_Emp_ID` )
REFERENCES `Alternative_Pathways`.`Staff` (`Emp_ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
SQL-Skriptausführung beendet: Anweisungen: 7 erfolgreich, 1 fehlgeschlagen
Hier ist die SQL-Anweisung für die übergeordneten Tabellen.
CREATE TABLE IF NOT EXISTS `Alternative_Pathways`.`Clients` (
`Case_Number` INT NOT NULL ,
`First_Name` CHAR(10) NULL ,
`Middle_Name` CHAR(10) NULL ,
`Last_Name` CHAR(10) NULL ,
`Address` CHAR(50) NULL ,
`Phone_Number` INT(10) NULL ,
PRIMARY KEY (`Case_Number`) )
ENGINE = InnoDB
CREATE TABLE IF NOT EXISTS `Alternative_Pathways`.`Staff` (
`Emp_ID` INT NOT NULL ,
`First_Name` CHAR(10) NULL ,
`Middle_Name` CHAR(10) NULL ,
`Last_Name` CHAR(10) NULL ,
PRIMARY KEY (`Emp_ID`) )
ENGINE = InnoDB
Ich vermute, dass Clients.Case_Number
und/oder Staff.Emp_ID
nicht genau der gleiche Datentyp sind wie Clients_has_Staff.Clients_Case_Number
und Clients_has_Staff.Staff_Emp_ID
.
Vielleicht sind die Spalten in den übergeordneten Tabellen INT UNSIGNED
?
Sie müssen in beiden Tabellen genau denselben Datentyp haben.
Gründe, warum Sie einen Fremdschlüssel-Beschränkungsfehler erhalten können:
Aktualisierung:
Überprüfen Sie dies.