0

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

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_CODEinSEMESTER表的表时,它给了我错误: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 服务器 5.6。

请帮忙!提前致谢。

4

1 回答 1

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无论如何都需要它作为表的外键!

于 2014-04-02T11:18:09.813 回答