I’ve seen this problem loads of time on forums, but I can’t seem to solve the issue for my particular situation.
I’m getting the following error on a simple insert.
Cannot add or update a child row: a foreign key constraint fails (`bag_track`.`job`, CONSTRAINT `fk_JOB_FLIGHT1` FOREIGN KEY (`FLIGHT_ID`) REFERENCES `FLIGHT` (`ID`) ON DELETE NO ACTION ON UPDATE NO ACTION)
Here are my table definitions:
Flight table
CREATE TABLE IF NOT EXISTS `BAG_TRACK`.`FLIGHT` (
`ID` INT NOT NULL AUTO_INCREMENT ,
`FLIGHT_NUM` VARCHAR(15) NOT NULL ,
`ORIGIN` VARCHAR(45) NOT NULL ,
`ARRIVAL_TIME` DATETIME NOT NULL ,
`STATUS` VARCHAR(45) NOT NULL ,
`CAROUSEL_ID` INT NOT NULL ,
`GATE_ID` INT NOT NULL ,
`AIRCRAFT_TYPE_ID` INT NOT NULL ,
PRIMARY KEY (`ID`) ,
INDEX `fk_FLIGHT_CAROUSEL1` (`CAROUSEL_ID` ASC) ,
INDEX `fk_FLIGHT_GATE1` (`GATE_ID` ASC) ,
INDEX `fk_FLIGHT_AIRCRAFT_TYPE1` (`AIRCRAFT_TYPE_ID` ASC) ,
CONSTRAINT `fk_FLIGHT_CAROUSEL1`
FOREIGN KEY (`CAROUSEL_ID` )
REFERENCES `BAG_TRACK`.`CAROUSEL` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_FLIGHT_GATE1`
FOREIGN KEY (`GATE_ID` )
REFERENCES `BAG_TRACK`.`GATE` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_FLIGHT_AIRCRAFT_TYPE1`
FOREIGN KEY (`AIRCRAFT_TYPE_ID` )
REFERENCES `BAG_TRACK`.`AIRCRAFT_TYPE` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = MyISAM
DEFAULT CHARACTER SET = utf8;
Job Table
CREATE TABLE IF NOT EXISTS `BAG_TRACK`.`JOB` (
`ID` INT NOT NULL AUTO_INCREMENT ,
`STATUS` VARCHAR(45) NOT NULL ,
`LONGITUDE` FLOAT NULL ,
`LATITUDE` FLOAT NULL ,
`SPEED` VARCHAR(45) NULL ,
`JOB_DATE` DATE NULL ,
`START_TIME` TIME NULL ,
`TOTAL_TIME` DOUBLE NULL ,
`COMPLETION_DATE` DATE NULL ,
`USER_ID` INT NOT NULL ,
`ROUTE_ID` INT NOT NULL ,
`FLIGHT_ID` INT NOT NULL ,
PRIMARY KEY (`ID`, `FLIGHT_ID`) ,
INDEX `fk_JOB_USER1` (`USER_ID` ASC) ,
INDEX `fk_JOB_ROUTE1` (`ROUTE_ID` ASC) ,
INDEX `fk_JOB_FLIGHT1` (`FLIGHT_ID` ASC) ,
CONSTRAINT `fk_JOB_USER1`
FOREIGN KEY (`USER_ID` )
REFERENCES `BAG_TRACK`.`USER` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_JOB_ROUTE1`
FOREIGN KEY (`ROUTE_ID` )
REFERENCES `BAG_TRACK`.`ROUTE` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_JOB_FLIGHT1`
FOREIGN KEY (`FLIGHT_ID` )
REFERENCES `BAG_TRACK`.`FLIGHT` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
I’m trying this simple insert
insert into job (status, USER_ID, ROUTE_ID, FLIGHT_ID) VALUES ('UNLOADING', 1, 1, 2)
and getting the error above.
I have data in my flight table with the primary key of 1.
I’ve examined everything on my DB for typos etc and I’m at a loss to see what the problem isI’d be very grateful is anyone can help.
Thanks
B
Both your tables must use innoDb engine as you can read from the official doc.
For the Flight table you have
ENGINE = MyISAMinstead.