[MySQL] Errno 150: Aanmaken Foreign Keys

Pagina: 1
Acties:
  • 580 views sinds 30-01-2008
  • Reageer

  • Jilvoos
  • Registratie: Maart 2003
  • Laatst online: 18-11 08:24
Hallo,

ik heb het volgende probleem. Ik heb een database met de volgende tabellen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
CREATE TABLE `cijfers` (
  `cijferid` int(11) NOT NULL auto_increment,
  `vakcode` varchar(12) default NULL,
  `omschrijving` text,
  `cijfer` int(11) default NULL,
  `cp` int(11) default NULL,
  `datum` date default NULL,
  `herkansing` int(11) default NULL,
  `competenties` char(12) default NULL,
  PRIMARY KEY  (`cijferid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

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

CREATE TABLE `competenties` (
  `comp_id` int(11) NOT NULL,
  `competentie` char(32),
  `uitleg` text,
  `niveau` double,
  `datum` char(10),
  PRIMARY KEY  (`comp_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

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

CREATE TABLE `gb` (
  `gbid` int(11) NOT NULL auto_increment,
  `naam` varchar(15),
  `title` varchar(64),
  `tekst` text,
  `date` date,
  PRIMARY KEY  (`gbid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

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

CREATE TABLE `images` (
  `id` int(11) NOT NULL auto_increment,
  `pic` char(64),
  `titel` char(64),
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

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

CREATE TABLE `login` (
  `id` int(11) NOT NULL auto_increment,
  `naam` char(64),
  `email` char(64),
  `login` char(15),
  `pass` char(24),
  `groep` int(4),
  `date` date,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `login` (`login`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

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

CREATE TABLE `news` (
  `newsid` int(11) NOT NULL auto_increment,
  `title` varchar(64),
  `tekst` text,
  `date` date,
  PRIMARY KEY  (`newsid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

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

CREATE TABLE `opdrachten` (
  `opdrachtid` int(11) NOT NULL auto_increment,
  `naam` char(11),
  `onderwerp` varchar(64),
  `cijfer` int(11),
  `leden` varchar(128),
  `rol` varchar(64),
  `doel` text,
  `uitleg` text,
  `pic` text,
  `date` date,
  `klas` int(1),
  `vak` char(10),
  PRIMARY KEY  (`opdrachtid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

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

CREATE TABLE `projecten` (
  `projectid` int(11) NOT NULL auto_increment,
  `nummer` int(11),
  `titel` varchar(64),
  `onderwerp` varchar(64),
  `cijfer` int(11),
  `leden` varchar(128),
  `rol` varchar(64),
  `doel` text,
  `uitleg` text,
  `pic` text,
  `date` date,
  `klas` int(1),
  PRIMARY KEY  (`projectid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

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

CREATE TABLE `tekst` (
  `tekstid` int(11) NOT NULL auto_increment,
  `title` varchar(64),
  `tekst` text,
  `date` date,
  PRIMARY KEY  (`tekstid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


Vervolgens wil ik dan deze tabel toevoegen:

code:
1
2
3
4
5
6
CREATE TABLE `vakcompetenties` (
  `cijferid` int(2) NOT NULL,
  `compid` int(11) NOT NULL,
  FOREIGN KEY (cijferid) REFERENCES cijfers(vakcode),
  FOREIGN KEY (compid) REFERENCES competenties(comp_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


En dan krijg ik deze error:

code:
1
2
 MySQL retourneerde: Documentatie
#1005 - Can't create table '.\portfolio\vakcompetenties.frm' (errno: 150)


Verder heb ik het geprobeerd met volle en lege tabellen (waarom weet ik niet, maar moet wat proberen) maar het wilde niet baten.

Verdere info:
Server versie: 5.0.26-community-nt
MySQL client version: 5.0.22
phpMyAdmin - 2.9.0.2

Ik ben echt ten einde raad, dus ik hoop dat jullie mij kunnen helpen,
Alvast bedankt!

  • yiko
  • Registratie: September 2003
  • Laatst online: 20-04 20:19
Het veld "vakcode" in de "cijfers" tabel is een varchar(2) , terwijl je de link legt naar het veld "cijferid" in "vakcompetenties" die een int is.