Ошибка ограничения внешнего ключа 1452 в MySQL - импорт Magento - PullRequest
7 голосов
/ 29 ноября 2011

Я пытаюсь импортировать дамп sql magento вместе с некоторыми данными о продукте, и я получаю эту ошибку ограничения внешнего ключа:

`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-запросами.Может, кто-нибудь объяснит мне, что делает этот запрос, и поможет мне решить эту проблему?Спасибо.

Ответы [ 2 ]

17 голосов
/ 29 ноября 2011

Вы пытаетесь добавить запись в catalog_eav_attribute, но у вас нет соответствующей записи в eav_attribute, которая соответствует attribute_id

Если вы также вставляете объемные данные в eav_attribute, Я бы порекомендовал сделать это сначала, а затем данные были бы в таблице до того, как внешний ключ на catalog_eav_attribute понадобился для ссылки на него.

В этой статье обсуждается, как вы можете использовать:

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

Если вы не можете изменить порядок ввода данных.Вам просто нужно убедиться, что ваши данные соответствуют внешним ключам после того, как все было вставлено в базу данных, прежде чем вы сможете снова включить FOREIGN_KEY_CHECKS

0 голосов
/ 15 июля 2013

Я использовал инструмент восстановления базы данных, после этого сделал это в SQL:

DROP TABLE catalog_product_flat_1, catalog_product_flat_2, catalog_product_flat_3;

Теперь индекс строится успешно.

...