mysql外键问题。跪求易做图指教。。 Can't create table 'test.homework' (errno: 150)问题
表一:
CREATE TABLE SUBJECT(
ID BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,#逻辑主键
SUBJECT VARCHAR(20) DEFAULT NULL,#课程
PRIMARY KEY(ID)
)TYPE=INNODB;
表二:
CREATE TABLE homework(
ID BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
subjectID BIGINT(20),
content TEXT,
diffculty INT(4) UNSIGNED DEFAULT 0,
PRIMARY KEY(ID),
FOREIGN KEY(subjectID) REFERENCES SUBJECT(ID)
)TYPE=INNODB;
表一能建好,但是建表二的时候就报了:
Error Code : 1005
Can't create table 'test.homework' (errno: 150)
刚学mysql很多地方都不懂。
求高手指教,感激不尽。
追问:Error Code : 1005
Can't create table 'test.#sql-5c0_1' (errno: 150)
照着你做的,但是还是报这个。。
是怎么回事呢?但是我照着你说的先把那表建好后,创建外键它还是报了
Error Code : 1005
Can't create table 'test.#sql-5c0_1' (errno: 150)ALTER TABLE homework ADD CONSTRAINT FK_HOMEWORK_2_SUBJECT FOREIGN KEY (subjectID) REFERENCES SUBJECT (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
答案:应该这样做,做法如下:
表一:
CREATE TABLE SUBJECT(
ID BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,#逻辑主键
SUBJECT VARCHAR(20) DEFAULT NULL,#课程
PRIMARY KEY(ID)
)TYPE=INNODB;
表二:
CREATE TABLE homework(
ID BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
subjectID BIGINT(20),
content TEXT,
diffculty INT(4) UNSIGNED DEFAULT 0,
PRIMARY KEY(ID)
)TYPE=INNODB;
###以下建立外键:
ALTER TABLE homework ADD CONSTRAINT FK_HOMEWORK_2_SUBJECT FOREIGN KEY (subjectID)
REFERENCES SUBJECT (ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
其中“FK_HOMEWORK_2_SUBJECT ”事故外键的名称,你可以随便起,一般都是用具有描述意义的名称
其他:这个问题与你之前问的问题一样,问题都出在创建表时试图创建外键,这是不允许的,你要先建好表,然后再建外键。具体做法参照你上一个问题,这里就不答复了。 建议你用MySQL Workbench 5.2 CE来做,建一个EER图,然后生成就行了,不用考虑这些代码...
上一个:mysql存储过程 循环 这个错哪儿了?
下一个:mysql同时用到group by和非group by的聚集函数怎么办