2017-10-07 72 views
0

我有两个表MySQL错误#1452

一个是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 

然后,我已经叫另一个表订单 与----

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

现在我试图为CustomerID和REFERENCE客户添加一个外键(Custom ERID)

我使用这个命令,但我得到一个#1452 - 不能添加或更新子行,外键约束失败

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

我已经作出了肯定的InnoDB匹配。

任何帮助将不胜感激。

+0

在客户 - 具有“ 0'填充 - 这很重要 – user3093389

回答

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这应该是一个主键,所以这应该是真实的。)

相关问题