Mysql 在PhpMyAdmin中添加约束外键的问题
我正在尝试创建5个表,这应该不会太难,但我在分配外键时遇到了问题。PhpMyAdmin给了我这个错误:Mysql 在PhpMyAdmin中添加约束外键的问题,mysql,phpmyadmin,Mysql,Phpmyadmin,我正在尝试创建5个表,这应该不会太难,但我在分配外键时遇到了问题。PhpMyAdmin给了我这个错误: 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
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;
我确信我犯了某种明显的错误,但我就是想不出来。任何帮助都将不胜感激
这是关系视图,忽略eEndom表:
要使用外键创建另一个表,请使用外键 指定的必须是至少一个表的主键 已经创建的,例如 使用主键创建表1:
CREATE TABLE PERSONS(
PERSON_ID INT(10),
FNAME VARCHAR(20)NOT NULL,
LNAME VARCHAR(20),
DOB DATETIME,
AMOUNTPAID DECIMAL(15,2),
PRIMARY KEY(PERSON_ID)
);
然后使用外键创建表2:
CREATE TABLE COMMENTS(
COMMENTID INT AUTO_INCREMENT,
COMMENTS VARCHAR(500),
PERSON_ID INT(10),
PRIMARY KEY(COMMENTID),
FOREIGN KEY (PERSON_ID) REFERENCES PERSONS(PERSON_ID)
);
外键引用完整的主键。部分PK上不能有引用。所以person需要包含pnr和gnr列,以便引用onskeThanks以便快速回复!你是对的,那是个错误。然而,当我试图运行代码时,我仍然得到了这个结果,相关的代码现在看起来是这样的