Question :
create table TruckMake(
TruckMakeID char(3) NOT NULL,
TruckMakeName varchar(20) NOT NULL,
primary key (TruckMakeID));
create table TruckModel(
TruckMakeID char(3) NOT NULL,
TruckModelID char(3) NOT NULL,
TruckModelName varchar(5) NOT NULL,
primary key (TruckMakeID, TruckModelID),
foreign key (TruckMakeID) references TruckMake(TruckMakeID));
create table Truck(
TruckVINNum char(4) NOT NULL,
TruckMakeID char(3) NOT NULL,
TruckModelID char(3) NOT NULL,
TruckColour varchar(15) NOT NULL,
TruckPurchaseDate date NOT NULL,
TruckCost decimal(8,2) NOT NULL,
primary key (TruckVINNum),
constraint truck_ibfk_2 foreign key (TruckMakeID) references TruckModel(TruckMakeID),
constraint truck_ibfk_1 foreign key (TruckModelID) references TruckModel(TruckModelID));
The error i’m getting is:
01:19:32 create table Truck( TruckVINNum char(4) NOT NULL, TruckMakeID char(3) NOT NULL, TruckModelID char(3) NOT NULL, TruckColour varchar(15) NOT NULL, TruckPurchaseDate date NOT NULL, TruckCost decimal(8,2) NOT NULL, primary key (TruckVINNum), constraint truck_ibfk_2 foreign key (TruckMakeID) references TruckModel(TruckMakeID),
constraint truck_ibfk_1 foreign key (TruckModelID) references TruckModel(TruckModelID))
Error Code: 1822. Failed to add the foreign key constraint.
Missing index for constraint 'truck_ibfk_1' in the referenced table 'truckmodel' 0.000 sec
How do i fix this?
Answer :
The primary key of truckmodel is primary key (TruckMakeID, TruckModelID)
So you can’t reference TruckModel(TruckModelID))
.
You could have:
foreign key (TruckMakeID, TruckModelID)
references TruckModel (TruckMakeID, TruckModelID)