如何修复MySQL中的错误:1452-无法添加或更新子行:外键约束失败

rqcrx0a6  于 2023-01-29  发布在  Mysql
关注(0)|答案(3)|浏览(276)

我在Navicat中运行sql查询,因此出现错误;
质询:

ALTER TABLE `customer_eav_attribute`
  ADD CONSTRAINT `CUSTOMER_EAV_ATTRIBUTE_ATTRIBUTE_ID_EAV_ATTRIBUTE_ATTRIBUTE_ID` 
  FOREIGN KEY (`attribute_id`) 
  REFERENCES `eav_attribute` (`attribute_id`) 
  ON DELETE CASCADE;

错误:

1452 - Cannot add or update a child row: a foreign key constraint
fails (`caterin1_test`.`#sql-dd4_13`, CONSTRAINT
`CUSTOMER_EAV_ATTRIBUTE_ATTRIBUTE_ID_EAV_ATTRIBUTE_ATTRIBUTE_ID`
FOREIGN KEY (`attribute_id`) 
REFERENCES `eav_attribute` (`attribute_id`) 
ON DELETE CA)

我该怎么修呢?

vq8itlhq

vq8itlhq1#

我认为eav_attribute表和customer_eav_attribute表中没有关联id,必须检查eav_attribute表和customer_eav_attribute表(最佳方式:请删除eav_attribute和customer_eav_attribute,然后重新插入数据)。您可以找到解决方案。

fcg9iug3

fcg9iug32#

当您尝试将源文件导入现有数据库时,通常会发生这种情况。请删除两个表(customer_eav_attribute、eav_attribute)。请重新创建表。

CREATE TABLE t1
(id INTEGER);

CREATE TABLE t2
(t1_id INTEGER,
 CONSTRAINT FOREIGN KEY (t1_id) REFERENCES t1 (id));

然后像这样设置。

ALTER TABLE `customer_eav_attribute`
  ADD CONSTRAINT `CUSTOMER_EAV_ATTRIBUTE_ATTRIBUTE_ID_EAV_ATTRIBUTE_ATTRIBUTE_ID` 
  FOREIGN KEY (`attribute_id`) 
  REFERENCES `eav_attribute` (`attribute_id`) 
  ON DELETE CASCADE;
68de4m5k

68de4m5k3#

父表必须存在,然后才能定义外键来引用它。必须按正确的顺序定义表:首先是父表,然后是子表。如果两个表相互引用,则必须创建一个不带FK约束条件的表,然后创建第二个表,最后使用ALTER TABLE将FK约束条件添加到第一个表。

相关问题