2017-08-08 17 views
-3

私はこのエラーコードを受け取りました。おかげエラーコード:1452.子行を追加または更新できません:外部キー制約は失敗します - MYSQL

エラーコード:追加または子の行を更新することはできません1452:外部キー制約が失敗した(。UPDATE CASCADE ON DELETE CASCADE ON @USERmeter、CONSTRAINT meter_FK FOREIGN KEY(location_code)を参照locationcode))

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 meter_FK 
FOREIGN KEY (location_code) 
    REFERENCES location (`code`) ON UPDATE CASCADE ON DELETE CASCADE); 

INSERT INTO meter VALUES ('G1','Gas','Testing Unit','NULL'); 
INSERT INTO meter VALUES ('G2','Gas','NULL','U1'); 
INSERT INTO meter VALUES ('E1','Electric','NULL','U1'); 
INSERT INTO meter VALUES ('G3','Gas','NULL','U2'); 
INSERT INTO meter VALUES ('G4','Gas','NULL','U2'); 
INSERT INTO meter VALUES ('E2','Electric','NULL','U2'); 
INSERT INTO meter VALUES ('E3','Electric','NULL','C1'); 
+0

' 'NULL''は有効な' location_code'ではありません。 –

+0

あなたは 'location_code'' not null'を持っていますが、最初のレコードでは 'location_code'に' NULL'があります。 –

+0

これがなぜ起こるのかを理解する前に、外部キーが何であるかを知る必要があります。それが何であるか知っていますか? – Mjh

答えて

0

このインスタンスの外部キー(FK)は "location_code"です。挿入しようとしているデータの最初の行には、「location_code」というnullがあります。

FKでは、関連するテーブルに一致する主キーが必要です。 (場所)

"location" "code"の値がnullの場合、FKの値が一致しないため、 "meter"テーブルにデータを挿入できません。

最も簡単な解決策 - あなたの最初のインサートにヌルを置き換える:

INSERT INTO meter VALUES ('G1','Gas','Testing Unit','U1'); 
関連する問題