0
我想创建5个表格(不应该太难),但我在分配外键时遇到了问题。 PhpMyAdmin给我这个错误:在PhpMyAdmin中添加CONSTRAINT FOREIGN KEY的问题
Can't create table 'databasexx.gave' (errno: 150)
基本上所有的表没有外键创建。
DROP TABLE IF EXISTS oppbygging;
CREATE TABLE oppbygging (
gnr INT,
dnr INT,
ant INT,
CONSTRAINT dnr_grn_pk PRIMARY KEY (gnr, dnr)
) ENGINE=InnoDB;
DROP TABLE IF EXISTS onske;
CREATE TABLE onske (
onr INT,
pnr INT,
gnr INT,
prioriet INT,
ferdig INT,
CONSTRAINT pnr_gnr_pk PRIMARY KEY (pnr, gnr)
) ENGINE=InnoDB;
DROP TABLE IF EXISTS person;
CREATE TABLE person (
pnr INT,
fornavn VARCHAR(64),
etternavn VARCHAR(64),
fdato DATE,
CONSTRAINT pnr_pk PRIMARY KEY (pnr),
CONSTRAINT person_pnr_fk FOREIGN KEY (pnr) REFERENCES onske(pnr)
) ENGINE=InnoDB;
DROP TABLE IF EXISTS gave;
CREATE TABLE gave
(
gnr int,
navn varchar (255) UNIQUE,
prod_tid int NOT NULL,
CONSTRAINT gnr_pk PRIMARY KEY (gnr),
CONSTRAINT gave_gnr_fk FOREIGN KEY (gnr) REFERENCES oppbygging(gnr),
CONSTRAINT gave_gnr_fk FOREIGN KEY (gnr) REFERENCES onske(gnr)
) ENGINE=InnoDB;
DROP TABLE IF EXISTS del;
CREATE TABLE del (
dnr INT,
navn VARCHAR(64),
lager_ant INT NOT NULL,
CONSTRAINT dnr_pk PRIMARY KEY (dnr),
CONSTRAINT del_dnr_fk FOREIGN KEY (dnr) REFERENCES oppbygging(dnr)
) ENGINE=InnoDB;
我相信我正在犯一些明显的错误,但我无法弄清楚。任何帮助将非常感激。
这里是关系图,忽略Eiendom表:
外键亩参考*完整*主键。你不能有一个“部分PK”的参考。所以'person'需要包含'pnr' **和**'gnr'列以便引用'onske' – 2014-09-23 10:35:57
感谢您的快速回复!你是对的,那是一个错误。不过,当我试图运行代码时,我仍然得到这个http://i.imgur.com/1gIHn2O.png 相关代码现在看起来像这样 http://i.imgur.com/wUZrOrb.png – Jogex 2014-09-23 10:42:17