2017-01-14 55 views
0

我正在使用xampp(localhost)和mysql爲項目製作數據庫,但我有一個外鍵問題,我不能找到我的錯誤,當我試圖創建一個學生登記表是我得到的消息: #1005 - 無法創建表Xstudentenrolment(錯誤:150「外鍵約束的格式不正確」)MySql外鍵不正確

我的表編號:

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)); 

我試圖小時找到什麼是我的語法錯誤,但我不能找到它,我試過很多其他的方法,如:

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

預先感謝您!

回答

0
  1. 我認爲FOREIGN KEY(STUDENTNUMBER)應該指定LOGINFO表。
  2. 也許this question可以幫助

看來,這個代碼不會導致錯誤:

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) 
);