fivestar Skrevet 12. april 2008 Skrevet 12. april 2008 (endret) Når jeg skal laste data inn i tabellen min deltakelse, får jeg følgende feilmelding: mysql> load data local infile "d:/data/deltakelse.txt" into table deltakelse; ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`skilop/deltakelse`, CONSTRAINT `Deltakelse_loperidFN` FOREIGN KEY ( `loperid`) REFERENCES `loper` (`loperid`)) Har prøvd mye rart og løye men får det fortsatt ikke til å fungere. Her er tabellene. Distanse: create table distanse ( distid integer auto_increment, navn varchar(50) not null, dato date, constraint distidpn primary key (distid)) engine=innodb; Loper: create table loper ( loperid integer auto_increment, fornavn varchar(50) not null, etternavn varchar(50) not null, nasjon varchar(3) unique, constraint loperidpn primary key (loperid), constraint nasjon_kortnavnfn foreign key (nasjon) references nasjon (kortnavn)) engine=innodb; Deltakelse: create table deltakelse (loperid integer, distid integer, tid integer(10), strafferunde integer(2), plassering integer(3) not null, constraint deltakelsepn primary key (loperid, distid), constraint deltakelse_loperidfn foreign key (loperid) references loper (loperid), constraint deltakelse_distidfn foreign key (distid) references distanse (distid)) engine=innodb; Endret 12. april 2008 av fivestar
blackbrrd Skrevet 12. april 2008 Skrevet 12. april 2008 (endret) Litt vanskelig å lese create table setningene dine, ettersom alt effektivt sett er på en linje... Har du vurdert å bruke primary key/references måten å opprette tabeller på? Den er vesentlig mer oversiktlig. create table distanse ( distid integer auto_increment primary key, navn varchar(50) not null, dato date, engine=innodb ); create table loper ( loperid integer auto_increment primary key, fornavn varchar(50) not null, etternavn varchar(50) not null, nasjon varchar(3) references nasjon, engine=innodb ); create table deltakelse ( deltakelseid integer auto_increment primary key, loperid integer references loper, distid integer references dist, tid integer(10), strafferunde integer(2), plassering integer(3) not null, engine=innodb ); Ah well, ser ut som mysql/innodb ignorer references skrevet på denne måten av en eller annen grunn. Det er denne måten jeg vanligvis skriver create table statements i postgresql... http://dev.mysql.com/doc/refman/5.0/en/create-table.html Endret 12. april 2008 av blackbrrd
fivestar Skrevet 12. april 2008 Forfatter Skrevet 12. april 2008 Akkurat nå så fungerte klipp/lim raskest men er enig i at det er mer oversiktlig på denne måten. :!:
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå