2017-04-17 60 views
0

我想创建几个表,其中一个应该有外键引用其他表,但MySQL Workbench总是给我“错误代码:1215.不能添加外键约束“。如果我在创建表的过程中尝试创建它们,并且只创建表并尝试通过ALTER添加FK,就会发生这种情况。我无法弄清楚问题所在。我已经尝试使用和不使用ENGINE = InnoDB,我看到一些人在网络上提出建议。是的,桌子kommune和人已经创建。MySQL工作台不会允许我创建外键

CREATE TABLE kommune (
Kommunenr varchar(4) NOT NULL, 
Kommunenavn varchar(45) NOT NULL, 
PRIMARY KEY (Kommunenr)); 

CREATE TABLE person (
PersonID varchar(4) NOT NULL, 
Fornavn varchar(45) NOT NULL, 
Etternavn varchar(45) NOT NULL, 
Postnr varchar(4) NOT NULL, 
Poststed varchar(45) NOT NULL, 
PRIMARY KEY (PersonID)); 

CREATE TABLE oppdrag (
Oppdragsnr varchar(5) NOT NULL, 
Eiendomnr varchar(4) NOT NULL, 
Gateadresse varchar(45) NOT NULL, 
Postnr varchar(4) NOT NULL, 
Poststed varchar(45) NOT NULL, 
Kommunenr varchar(4) NOT NULL, 
Prisantydning varchar(10) NOT NULL, 
Solgt boolean NOT NULL, 
PRIMARY KEY (Oppdragsnr), 
FOREIGN KEY (Postnr) REFERENCES person(Postnr), 
FOREIGN KEY (Poststed) REFERENCES person(Poststed), 
FOREIGN KEY (Kommunenr) REFERENCES kommune(Kommunenr)); 
+0

只需创建表,然后从结构中只需设置这些表之间的关系即可 – Jenish

回答

1

检查以下行:

FOREIGN KEY (Postnr) REFERENCES person(Postnr), 
FOREIGN KEY (Poststed) REFERENCES person(Poststed), 

但在你的表结构:

CREATE TABLE person (
PersonID varchar(4) NOT NULL, 
Fornavn varchar(45) NOT NULL, 
Etternavn varchar(45) NOT NULL, 
Postnr varchar(4) NOT NULL, 
Poststed varchar(45) NOT NULL, 
PRIMARY KEY (PersonID)); 

Postnr, Poststed既不unique或不primary key。要创建外键,基表中的引用列必须是索引列

+0

这似乎是问题所在,是的。我把独特的Postnr和Poststed,并通过了。 – PQuix

+0

答案可以解决您的问题吗? –