MySQL Error 1005 – Can’t Create Table Due to Foreign Key Constraint

foreign keyMySQLphpmyadmin

Can anyone figure out why phpMyAdmin won't create the last table? It works fine if I drop the last foreign key, but I need it in there to get my assignment approved…

    CREATE TABLE nasjon ( 
    nasjonskode INT NOT NULL,
    nasjon VARCHAR(25) NOT NULL,
    leder VARCHAR(25) NOT NULL,
    deltagernr VARCHAR(25) NOT NULL,
    PRIMARY KEY (deltagernr)
    );


    CREATE TABLE passering (
    avstand INT NOT NULL,
    starttid INT NOT NULL,
    slutttid INT NOT NULL,
    passeringspunkt INT NOT NULL,
    høydeforskjell VARCHAR(25) NULL,
    bilde VARCHAR(25) NOT NULL,
    mellomtid VARCHAR(25) NOT NULL,
    PRIMARY KEY (slutttid, starttid)
    );


    CREATE TABLE vinner (
    startnr INT NOT NULL,
    alder VARCHAR (25) NOT NULL,
    kjønn VARCHAR (25) NOT NULL,
    øvelseid VARCHAR (25) NOT NULL,
    slutttid INT NOT NULL,
    PRIMARY KEY (startnr, slutttid),
    FOREIGN KEY (slutttid) REFERENCES passering (slutttid)
    );

 CREATE TABLE øvelser (
  øvelseid INT NOT NULL,
  øvelse VARCHAR(45) NULL,
  lengde VARCHAR(45) NULL,
  dato VARCHAR(45) NULL,
  starttidspunkt VARCHAR(45) NULL,
  PRIMARY KEY (øvelseid)
  );

CREATE TABLE registrering (
  deltagernr VARCHAR(25) NOT NULL,
  fornavn VARCHAR(45) NULL,
  etternavn VARCHAR(45) NULL,
  fødselsdato VARCHAR(45) NULL,
  kjønn VARCHAR(45) NULL,
  PRIMARY KEY (deltagernr),
  FOREIGN KEY (deltagernr) REFERENCES nasjon (deltagernr)
  );

CREATE TABLE påmelding (
  deltagernr VARCHAR(25) NOT NULL,
  startnr INT NOT NULL,
  øvelseid INT NOT NULL,
  PRIMARY KEY (startnr, øvelseid, deltagernr),
  FOREIGN KEY (startnr) REFERENCES vinner (startnr),
  FOREIGN KEY (øvelseid) REFERENCES øvelser (øvelseid),
  FOREIGN KEY (deltagernr) REFERENCES registrering (deltagernr)
  );

  CREATE TABLE startet (
  starttid INT NOT NULL,
  startnr INT NOT NULL,
  dato VARCHAR(45) NULL,
  status VARCHAR(45) NULL,
  PRIMARY KEY (startnr, starttid),
  FOREIGN KEY (startnr) REFERENCES vinner (startnr),
  FOREIGN KEY (starttid) REFERENCES passering (starttid)
   );

Been trying for hours to get this to work, but I get the same error message each time, and I'm not an administrator over the DB so can't get any further.

Best Answer

You need a key on passering.starttid in order to link it as a foreign key.

Like this:

   CREATE TABLE passering (
     avstand INT NOT NULL,
     starttid INT NOT NULL,
     slutttid INT NOT NULL,
     passeringspunkt INT NOT NULL,
     høydeforskjell VARCHAR(25) NULL,
     bilde VARCHAR(25) NOT NULL,
     mellomtid VARCHAR(25) NOT NULL,
     PRIMARY KEY (slutttid, starttid),
     KEY (starttid)
     );