2017-01-14 21 views
0

Ich benutze Xampp (localhost) und mysql, um eine Datenbank für ein Projekt zu erstellen, aber ich habe ein Problem mit Fremdschlüsseln und ich kann meinen Fehler nicht finden, wenn ich versuche, eine Student Enrolment-Tabelle zu erstellen ist die Nachricht, die ich bekomme: # 1005 - kann Tabelle X nicht erstellen. studentenrolment (errno: 150 „über Fremdschlüssel ist falsch gebildet“)MySql Foreign Key ist falsch gebildet

Meine Tabellen-Code:

CREATE TABLE LOGINFO (
STUDENTNUMBER NUMERIC(9) NOT NULL, 
PASS CHAR(12), 
CONSTRAINT LOGINFO_PRIMARY_KEY PRIMARY KEY (STUDENTNUMBER)); 

CREATE TABLE LEADERS(
MODULESLEADER CHAR(16) NOT NULL, 
LEADERSOFFICE CHAR(16) , 
LEADERSEMAIL CHAR(16) , 
LEADERSPHONE numeric(4), 
CONSTRAINT LEADERS_PRIMARY_KEY PRIMARY KEY (MODULESLEADER)); 

CREATE TABLE MODULES(
MODULESLEADER CHAR(16) NOT NULL, 
MODULECODE CHAR(6) NOT NULL , 
MODULEDESCRIPTION CHAR(16) , 
LECTURESLOT CHAR (16), 
LECTUREROOM CHAR(4) , 
CONSTRAINT MODULES_FOREIGN_KEY FOREIGN KEY (MODULESLEADER) REFERENCES LEADERS (MODULESLEADER), 
CONSTRAINT MODULES_PRIMARY_KEY PRIMARY KEY (MODULESLEADER,MODULECODE)); 

CREATE TABLE STUDENTENROLMENT(
STUDENTNUMBER NUMERIC(9) NOT NULL, 
MODULECODE CHAR(6) NOT NULL , 
CONSTRAINT STUDENTENROLMENT_FOREIGN_KEY FOREIGN KEY (STUDENTNUMBER) REFERENCES LEADERS (STUDENTNUMBER), 
CONSTRAINT STUDENTENROLMENT_FOREIGN_KEY FOREIGN KEY (MODULECODE) REFERENCES MODULES (MODULECODE), 
CONSTRAINT STUDENTENROLMENT_PRIMARY_KEY PRIMARY KEY (STUDENTNUMBER, MODULECODE)); 

ich Stunden bin versucht zu finden, was der Fehler mit meiner Syntax ist, aber ich kann es finde ich habe versuchte viele andere Möglichkeiten wie:

CONSTRAINT STUDENTENROLMENT2_FOREIGN_KEY FOREIGN KEY (MODULECODE) REFERENCES MODULES (MODULECODE) 

Vielen Dank im Voraus!

Antwort

0
  1. Ich denke, dass ausländische Schlüssel (STUDENTNUMBER) zu LOGINFO Tabelle angeben sollte.
  2. Vielleicht kann this question

helfen Es scheint, dass dieser Code nicht einen Fehler verursacht:

CREATE TABLE LOGINFO (
    STUDENTNUMBER NUMERIC(9) NOT NULL, 
    PASS CHAR(12), 
    CONSTRAINT LOGINFO_PRIMARY_KEY PRIMARY KEY (STUDENTNUMBER)); 

CREATE TABLE LEADERS(
    MODULESLEADER CHAR(16) CHARACTER SET utf8 NOT NULL, 
    LEADERSOFFICE CHAR(16) , 
    LEADERSEMAIL CHAR(16) , 
    LEADERSPHONE numeric(4), 
    CONSTRAINT LEADERS_PRIMARY_KEY PRIMARY KEY (MODULESLEADER)); 

CREATE TABLE MODULES(
    MODULESLEADER CHAR(16) CHARACTER SET utf8 NOT NULL, 
    MODULECODE CHAR(6) CHARACTER SET utf8 NOT NULL , 
    MODULEDESCRIPTION CHAR(16) , 
    LECTURESLOT CHAR (16), 
    LECTUREROOM CHAR(4) , 
    CONSTRAINT MODULES_FOREIGN_KEY FOREIGN KEY (MODULESLEADER) REFERENCES LEADERS (MODULESLEADER), 
    CONSTRAINT MODULES_PRIMARY_KEY PRIMARY KEY (MODULECODE, MODULESLEADER)); 



CREATE TABLE STUDENTENROLMENT 
(
    STUDENTNUMBER NUMERIC(9) NOT NULL, 
    MODULECODE CHAR(6) CHARACTER SET utf8 NOT NULL, 
    CONSTRAINT STUDENTENROLMENT_MODULES_MODULECODE_fk FOREIGN KEY (MODULECODE) REFERENCES MODULES (MODULECODE) 
,CONSTRAINT STUDENTENROLMENT_LOGINFO_STUDENTNUMBER_fk FOREIGN KEY (STUDENTNUMBER) REFERENCES LOGINFO (STUDENTNUMBER), 
    CONSTRAINT STUDENTENROLMENT_PRIMARY_KEY PRIMARY KEY (STUDENTNUMBER, MODULECODE) 
);