2017-08-07 17 views
3

誰も私は次のエラーメッセージが表示されます知っていますか?(errno:150 "外部キー制約が正しく形成されていません") - mysql

にerrno:150

CREATE TABLE meter (
    `code` CHAR(5) NOT NULL, 
    `type` VARCHAR(30) NOT NULL, 
    description VARCHAR(30) NULL, 
    location_code CHAR(3) NOT NULL, 
CONSTRAINT pri_meter 
    PRIMARY KEY (`code`), 
CONSTRAINT for_meter 
    FOREIGN KEY (location_code) REFERENCES location (`code`)); 

CREATE TABLE location(
    `code` CHAR(3) NOT NULL, 
    company VARCHAR(30), 
    `type` VARCHAR(30), 
CONSTRAINT pri_location 
    PRIMARY KEY (`code`)); 

CREATE TABLE reading(
    meter_code CHAR(5) NOT NULL, 
    `when` DATETIME NOT NULL, 
    display DECIMAL(9,3) NOT NULL, 
    estimate BIT NOT NULL, 
CONSTRAINT pri_reading 
    PRIMARY KEY (`when`, meter_code), 
CONSTRAINT for_reading 
    FOREIGN KEY (meter_code) REFERENCES meter (`code`)); 

CREATE INDEX index_meter ON meter (location_code); 
CREATE INDEX index_reading ON reading (meter_code); 
+0

最初の 'location'テーブルを作成しています。参照されているテーブルがまだ存在しない場合は、テーブルの列を参照することはできません(ここでは、メーターテーブルの作成時にテーブルの場所を参照します)。 –

+0

ご協力ありがとうございました。 :D –

答えて

2

が最初locationテーブルを作成し、 "外部キー制約が正しく形成されています"。

参照されているテーブルがまだ存在しない場合は、テーブルの列を参照できません。

meterテーブルの作成時に、テーブルlocationへの参照があります。あなたがする必要があるForeign Keyテーブルを作成する前に

0

1. Create the Primary Key table first. 
2. Must better to create all tables first without any Primary Key or Foreign Key Constraints.(Optional) 
3. After that, create the Primary key and the Foreign Key Constraints of it. 

これは単なるアイデア

関連する問題