mysql - Cannot add or update a child row: a foreign key constraint fails -
mysql - Cannot add or update a child row: a foreign key constraint fails -
i need help...while creating database kept running error:
error 1452 (23000): cannot add together or update kid row: foreign key constraint fails (`accident_db`.`participated`, constraint `participated_ibfk_2` foreign key (`license`) references `car` (`license`))
the problem come in hand when seek insert participated. tried making whole database over, coding diff way, checking spelling, , other grammar errors.
create table person ( driver_id varchar(9) primary key, name varchar(25), address varchar(40) ) engine=innodb; create table auto ( license varchar(8), model varchar(15), year date, primary key(license) ) engine=innodb; create table accident ( report_id varchar(6), date date, location varchar(25), primary key(report_id) ) engine=innodb; create table owns ( driver_id varchar(9), license varchar(8), foreign key(driver_id) references person(driver_id), foreign key(license) references car(license), primary key(driver_id, license) ) engine=innodb; create table participated ( driver_id varchar(9), license varchar(8) , report_id varchar(6), damage_amount decimal(10,2), foreign key(driver_id) references person(driver_id), foreign key(license) references car(license), foreign key(report_id) references accident(report_id), primary key(driver_id, license,report_id) ) engine=innodb; insert person values('driver001','john smith','tech, tn'); insert auto values('aabb2000','bmw','2001'); insert accident values('ar2197','2014-04-08','cookeville tn'); insert owns values('driver001','aabb2000'); insert participated values('driver002','ar2197','ccdd3000','1500');
pay attending error messages.
insert person values('driver001','john smith','tech, tn');
you inserted 'driver001'.
insert participated values('driver002','ar2197','ccdd3000','1500');
but row tries reference 'driver002'. fixing lead another fk error, though. license doesn't exist, either.
when insert rows, it's best practice list columns after table. maintain them in table order, it's easier see you're going wrong. (we omit column list in answers brevity, , create easier focus on real problem.)
the next insert statement should succeed. if really want insert info form driver002, or license ccdd3000, you'll need insert values "person" , "car" first.
insert participated (driver_id, license, report_id, damage_amount) values('driver001','aabb2000','ar2197','1500');
as separate issue, column "year" should integer, not date.
create table auto ( license varchar(8), model varchar(15), year date, primary key(license) ) engine=innodb;
the insert statement integer year different.
insert auto values('aabb2000','bmw','2001'); -- not insert auto values('aabb2000','bmw', 2001); --
the integer year isn't quoted.
mysql sql database reference foreign-keys
Comments
Post a Comment