我在创建数据库表时遇到问题。我做了类似的事情:
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。
请帮忙! 在此先感谢。
答案 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
表的外键!