Jeg forsøger at forward engineer mit nye skema på min db-server, men jeg kan ikke finde ud af hvorfor jeg får denne fejl. Jeg har prøvet at søge efter svaret her, men alt hvad jeg har fundet har sagt, at jeg enten skal indstille db-motoren til Innodb eller sikre mig, at de nøgler, jeg forsøger at bruge som en fremmednøgle, er primære nøgler i deres egne tabeller. Jeg har gjort begge disse ting, hvis jeg ikke tager fejl. Er der anden hjælp I kan tilbyde?
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 script execution finished: statements: 7 lykkedes, 1 mislykkedes
Her er SQL'en for de overordnede tabeller.
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
Jeg gætter på, at Clients.Case_Number
og/eller Staff.Emp_ID
ikke er nøjagtig samme datatype som Clients_has_Staff.Clients_Case_Number
og Clients_has_Staff.Staff_Emp_ID
.
Måske er kolonnerne i de overordnede tabeller INT UNSIGNED
?
De skal have nøjagtig samme datatype i begge tabeller.
Årsager til at du kan få en fejl i forbindelse med en fremmed nøglebegrænsning:
opdatering:
ON DELETE SET NULL
, ikke er defineret til at være nul. Så sørg for, at kolonnen er indstillet som standard nul.Kontroller disse.