MySQL-Fehler 1215: Fremdschlüssel-Beschränkung kann nicht hinzugefügt werden
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
313
3
Ich vermute, dass
Clients.Case_Number
und/oderStaff.Emp_ID
nicht genau der gleiche Datentyp sind wieClients_has_Staff.Clients_Case_Number
undClients_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.
Ich habe den gleichen Fehler beim Versuch, eine fk hinzufügen. In meinem Fall wurde das Problem durch die PK der FK-Tabelle verursacht, die als unsigned markiert war.