2017-08-08 87 views
-3

我得到这个错误代码,不知道为什么任何帮助将不胜感激。由于错误代码:1452.无法添加或更新子行:外键约束失败 - MYSQL

错误代码:1452不能添加或更新子行,外键约束失败(@USERmeter,约束meter_FK外键(location_code)参考文献locationcode)ON DELETE CASCADE ON UPDATE CASCADE)

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”。

FK需要您在相关表中具有匹配的主键。 (位置)

“位置”“代码”非常不可能具有空值作为值 - 如果没有匹配的FK值,则无法将数据插入到“米”表中。

最简单的办法 - 在您第一次插入更换空:

INSERT INTO meter VALUES ('G1','Gas','Testing Unit','U1'); 
相关问题