不明白为什么我得到错误1215:无法添加外键

时间:2014-03-28 08:23:45

标签: mysql-5.6

我在创建数据库表时遇到问题。我做了类似的事情:

CREATE TABLE STREAM( STREAM_ID INT AUTO_INCREMENT NOT NULL PRIMARY KEY, STREAM_NAME VARCHAR(100) NOT NULL, TOTAL_SEM INT NOT NULL )Engine=InnoDB;

然后:

CREATE TABLE SEMESTER( STREAM_ID INT AUTO_INCREMENT NOT NULL, SEMESTER INT NOT NULL, SUB_NAME VARCHAR(100) NOT NULL, SUB_CODE VARCHAR(100) NOT NULL, PRIMARY KEY(STREAM_ID,SUB_CODE), CONSTRAINT STUDENT_STREAM_FK5 FOREIGN KEY (STREAM_ID) REFERENCES STREAM(STREAM_ID) )Engine=InnoDB;

它可以很好地创建数据库表。但当我创建另一个表引用SUB_CODE表中的SEMESTER时,它给出了错误:1215:

CREATE TABLE SUBJECT( Q_NO INT AUTO_INCREMENT NOT NULL, SUB_CODE VARCHAR(100) NOT NULL, SEMESTER VARCHAR(100) NOT NULL, SET_NO INT NOT NULL, Q_TYPE VARCHAR(100) NOT NULL, QUESTION VARCHAR(200) NOT NULL, CHOICE_1 VARCHAR(30), CHOICE_2 VARCHAR(30), CHOICE_3 VARCHAR(30), CHOICE_4 VARCHAR(30), CORRECT VARCHAR(30), ANSWER VARCHAR(30), MARKS FLOAT, PRIMARY KEY(Q_NO,SUB_CODE), CONSTRAINT STUDENT_SEMESTER_FK6 FOREIGN KEY (SUB_CODE) REFERENCES SEMESTER(SUB_CODE) )Engine=InnoDB;

在创建SUBJECT表的情况下,它会给出错误:1215。我不明白,我创建表SEMESTER的方式与我尝试创建SUBJECT的方式相同,那么为什么它不起作用? 我正在使用MySQL Server 5.6。

请帮忙! 在此先感谢。

1 个答案:

答案 0 :(得分:0)

无论如何我解决了它。就是这样:

CREATE TABLE SUBJECT( Q_NO INT AUTO_INCREMENT NOT NULL PRIMARY KEY, SUB_CODE VARCHAR(100) NOT NULL REFERENCES SEMESTER(SUB_CODE), SEMESTER VARCHAR(100) NOT NULL, SET_NO INT NOT NULL, Q_TYPE VARCHAR(100) NOT NULL, QUESTION VARCHAR(200) NOT NULL, CHOICE_1 VARCHAR(30), CHOICE_2 VARCHAR(30), CHOICE_3 VARCHAR(30), CHOICE_4 VARCHAR(30), CORRECT VARCHAR(30), ANSWER VARCHAR(30), MARKS FLOAT )Engine=InnoDB;

我忽略了将SUB_CODE作为主键。它完成了。无论如何,它都需要成为SEMESTER表的外键!