Ik probeer mijn nieuwe schema op mijn db server te forward engineeren, maar ik kan'niet achterhalen waarom ik deze foutmelding krijg. Ik'heb geprobeerd om hier naar het antwoord te zoeken, maar alles wat ik'heb gevonden heeft gezegd om ofwel de db engine op Innodb in te stellen of om ervoor te zorgen dat de sleutels die ik'probeer te gebruiken als een foreign key primaire sleutels zijn in hun eigen tabellen. Ik heb beide dingen gedaan, als ik me niet vergis. Is er nog andere hulp die jullie kunnen bieden?
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 uitvoering voltooid: statements: 7 gelukt, 1 mislukt.
Hier is de SQL voor de bovenliggende 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
Ik'gok dat Clients.Case_Number
en/of Staff.Emp_ID
niet precies hetzelfde datatype zijn als Clients_has_Staff.Clients_Case_Number
en Clients_has_Staff.Staff_Emp_ID
.
Misschien zijn de kolommen in de bovenliggende tabellen INT UNSIGNED
?
Ze moeten in beide tabellen precies hetzelfde datatype hebben.
Redenen waarom je een foreign key constraint error kan krijgen:
Bijgewerkt:
ON DELETE SET NULL
niet gedefinieerd is om null te zijn. Zorg er dus voor dat de kolom standaard op null is gezet.Controleer deze.