Avatar billede bent_3_16 Nybegynder
19. december 2007 - 17:21 Der er 9 kommentarer og
1 løsning

Jeg får fejl 150 , når jeg opretter en fremmednøgle i min tabel

Hej med jer,

Jeg har nu bakset i tre timer med det her problem, men kan bare ikke finde løsningen. Jeg har været side op og side ned, samt inde på mysql.com for at kigge, men lige lidt hjælper det. Er der en af jer der kan hjælpe mig?

Jeg opretter følgende to tabeller:


CREATE TABLE `bruger` (
  `bruger_id` int(11) NOT NULL auto_increment,
  `brnavn` varchar(50) NOT NULL,
  PRIMARY KEY  (`bruger_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


CREATE TABLE `score` (
  `brugernavn` varchar(50) NOT NULL,
  `score_id` int(11) NOT NULL auto_increment,
  FOREIGN KEY (`brugernavn`) REFERENCES `bruger` (`brnavn`) ON DELETE CASCADE,
  PRIMARY KEY  (`score_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Men jeg får til stadighed bare fejlen

#1005 - Can't create table '.\lort\score.frm' (errno: 150)

Er der nogen som kan hjælpe?
På forhånd tak :)
Avatar billede bent_3_16 Nybegynder
19. december 2007 - 17:21 #1
Og jeg sidder med MySQL 5.0.18
Avatar billede arne_v Ekspert
20. december 2007 - 01:46 #2
prøv og tilføj et normalt index på bruger.brnavn
Avatar billede bent_3_16 Nybegynder
08. januar 2008 - 12:53 #3
Hej igen. Jeg beklager den lange svartid, men jeg kom til juletiden, og der var skiferie bagefter

Det kan godt være jeg spørger dumt, men hvad mener du med et normalt index?
Avatar billede bent_3_16 Nybegynder
08. januar 2008 - 13:08 #4
Ah - altså noget i retningen af

FOREIGN KEY (`brugernavn`) REFERENCES `bruger.bruger`
Avatar billede bent_3_16 Nybegynder
08. januar 2008 - 13:08 #5
øh jeg mente
FOREIGN KEY (`brugernavn`) REFERENCES `bruger.brnavn`
Avatar billede arne_v Ekspert
08. januar 2008 - 15:07 #6
ja
Avatar billede bent_3_16 Nybegynder
15. januar 2008 - 12:49 #7
Jeg har rodet lidt videre med sagerne, men jeg får stadigvæk samme fejl:
#1005 - Can't create table '.\vq_v2\score.frm' (errno: 150)

SQL-koden jeg sætter ind, ser ud som følger

CREATE TABLE `score` (
  `score_id` int(11) NOT NULL auto_increment,
  `brugernavn` varchar(50) NOT NULL,
  FOREIGN KEY (`brugernavn`) REFERENCES `bruger.brnavn` ON DELETE CASCADE,
  PRIMARY KEY (`score_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Der kommer fejl, altså rødt kryds, i linjen med
  FOREIGN KEY (`brugernavn`) REFERENCES `bruger.brnavn` ON DELETE CASCADE,
Avatar billede bent_3_16 Nybegynder
15. januar 2008 - 14:02 #8
Jeg har rodet lidt videre med det, samt udvidet databasen, og er kommet til noget der virker fint:

CREATE TABLE `bruger` (
  `bruger_id` int(11) NOT NULL auto_increment,
  `email` varchar(100) NOT NULL,
  `brnavn` varchar(50) NOT NULL,
  `kodeord` varchar(50) NOT NULL,
  `postnr` int(11) NOT NULL,
  PRIMARY KEY  (`bruger_id`),
  KEY `postnr` (`postnr`),
  KEY `idx_brnavn` (`brnavn`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

CREATE TABLE `postnr` (
  `postnummer` int(11) NOT NULL,
  `bynavn` varchar(50) NOT NULL,
  PRIMARY KEY  (`postnummer`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `score` (
  `score_id` int(11) NOT NULL auto_increment,
  `brugernavn` varchar(50) NOT NULL,
  PRIMARY KEY  (`score_id`),
  KEY `idx_score` (`brugernavn`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

ALTER TABLE `bruger`
  ADD CONSTRAINT `bruger_ibfk_1` FOREIGN KEY (`postnr`) REFERENCES `postnr` (`postnummer`);

ALTER TABLE `score`
  ADD CONSTRAINT `score_ibfk_1` FOREIGN KEY (`brugernavn`) REFERENCES `bruger`
(`brnavn`) ON DELETE CASCADE;

----------------------------------------------------------

Såvidt jeg kan se, bør det virke uden problemer
Avatar billede bent_3_16 Nybegynder
15. januar 2008 - 14:05 #9
Er du flink at smide et svar Arne? Ideen om indeksering kom fra dig :)
Avatar billede arne_v Ekspert
16. januar 2008 - 01:38 #10
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester