当前位置:数据库 > MySQL >>

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的聚集函数怎么办

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,