2017-01-14 1 views
0

xampp (localhost) 및 mysql을 사용하여 프로젝트 데이터베이스를 만들었지 만 외래 키에 문제가 있으며 학생 등록 ​​테이블을 만들려고 할 때 실수를 할 수 없습니다. 내가 받고있는 메시지입니다 : # 1005 - X 테이블을 만들 수 없습니다. studentenrolment (errno를 : 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. 외부 키 (STUDENTNUMBER)가 LOGINFO 테이블에 지정해야한다고 생각합니다.

    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) 
    ); 
    
    :
  2. 어쩌면 this question이 코드는 오류가 발생하지 않는 것으로 보인다

도움이 될 수 있습니다

관련 문제