MySQL 中的外键约束错误 1452 - Magento 导入

Posted

技术标签:

【中文标题】MySQL 中的外键约束错误 1452 - Magento 导入【英文标题】:Foreign key constraint error 1452 in MySQL - Magento import 【发布时间】:2012-01-08 13:06:31 【问题描述】:

我正在尝试导入 magento 的 sql 转储以及一些产品数据,但出现此外键约束错误:

`ERROR 1452 (23000) at line 231680: Cannot add or update a child row: a foreign key constraint fails:
`magento`.`#sql-b33_27`, CONSTRAINT `FK_CATALOG_COMPARE_ITEM_CUSTOMER_ID_CUSTOMER_ENTITY_ENTITY_ID` FOREIGN KEY (`customer_id`) REFERENCES `customer_entity` (`entity_id`) ON DELETE CASCADE ON )`

这是导致错误的 sql 代码:

--
-- Constraints for table `catalog_eav_attribute`
--
ALTER TABLE `catalog_eav_attribute`
  ADD CONSTRAINT `FK_CATALOG_EAV_ATTRIBUTE_ATTRIBUTE_ID_EAV_ATTRIBUTE_ATTRIBUTE_ID` FOREIGN KEY (`attribute_id`) REFERENCES `eav_attribute` (`attribute_id`) ON DELETE CASCADE ON UPDATE CASCADE;

我对 sql 查询不太满意。有人可以解释一下这个查询的作用并指导我解决这个问题吗?谢谢。

【问题讨论】:

【参考方案1】:

您正在尝试将记录添加到 catalog_eav_attribute,但您在 eav_attribute 中没有与 attribute_id 匹配的相应记录

如果您还向eav_attribute 插入批量数据,我建议先这样做,然后数据将在表中catalog_eav_attribute 上的外键需要引用它之前。

article 讨论了如何使用:

SET FOREIGN_KEY_CHECKS = 0;
--Do your update here
SET FOREIGN_KEY_CHECKS = 1;

如果您无法更改插入数据的顺序。将所有内容插入数据库后,您只需确保数据遵循外键,然后才能重新启用 FOREIGN_KEY_CHECKS

【讨论】:

谢谢,成功了。还有一些其他ALTER TABLE 查询导致了类似的错误,但您的建议帮助我成功导入了数据。谢谢。 非常感谢!正在尝试导入备份并遇到此问题!它对我有用,我已经成功导入数据库!【参考方案2】:

我使用了一个数据库修复工具,然后在 SQL 中进行了此操作:

删除表catalog_product_flat_1 , catalog_product_flat_2 , catalog_product_flat_3;

现在索引已成功构建。

【讨论】:

以上是关于MySQL 中的外键约束错误 1452 - Magento 导入的主要内容,如果未能解决你的问题,请参考以下文章

mysql1452错误

MySQL 外键约束 - 错误 1452 - 无法添加或更新子行

创建外键时,phpmyadmin 中的外键约束失败

MySql 重启后:#1452 - 无法添加或更新子行:外键约束失败

Magento DB错误:完整性约束违规:1452无法添加或更新子行:外键约束失败

此表中的外键约束有啥问题?