2017-04-17 47 views
0

いくつかのテーブルを作成しようとしていますが、そのうちの1つが他のテーブルを参照する外部キーを持つ必要がありますが、MySQL Workbenchは "Error Code:1215"外部キー制約を追加する "。これは、テーブルの作成中にテーブルを作成しようとしたときに、テーブルを作成してからALTERを使用してFKを追加しようとすると発生します。私は問題を理解できません。私はENGINE = InnoDBの有無にかかわらず試してみましたが、Web上で何人かの人々が提案しているのを見ました。そして、はい、表kommuneと人が作成されています。MySQL Workbenchで外部キーを作成することはできません

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をどちらuniqueprimary keyです。外部キーを作成するには、基底テーブルの参照列は、のインデックス付き列でなければなりません

+0

これは問題でした。私はPostnrとPoststedにUniqueを入れ、それは通りました。 – PQuix

+0

答えがあなたの問題を解決していますか? –

関連する問題