Gå til innhold

Hva er galt med tabellene min? *MySQL*


Anbefalte innlegg

Skrevet (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 av fivestar
Videoannonse
Annonse
Skrevet (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 av blackbrrd

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...