MYSQL错误#1452

时间:2017-10-07 23:20:08

标签: mysql sql

我有两张桌子

一个是Customer表 用---

CustomerID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
Name CHAR(50) NOT NULL
Address CHAR (100) Not NULL
CITY CHAR (30) Not NULL

然后我有另一个名为Orders的表 与----

OrdersID  INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
CustomerID INT UNSIGNED NOT NULL
Amount FLOAT(6,2)
Date DATE NOT NULL

现在我正在尝试为CustomerID和REFERENCE Customers(CustomerID)添加外键

我正在使用此命令,但我得到#1452 - 无法添加或更新子行:外键约束失败

ALTER TABLE LA_Orders
ADD CONSTRAINT fk_CustomerID FOREIGN KEY (CustomerID) REFERENCES LA_Customers(CustomerID)

我已经确定InnoDB匹配了。

任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

如果LA_Orders已有数据并且CustomerID列无效,则会发生这种情况。

您可以使用以下方式找到它们:

select lo.*
from LA_Orders lo
where lo.CustomerID not in (select lc.CustomerID from LA_Customers lc);

(实际上,这假定LA_Customers(CustomerID)不是NULL。它应该是主键,因此应该是真的。)