2011-11-29 8 views
7

sto cercando di importare un dump sql di Magento insieme ad alcuni dati di prodotto e ottengo questo errore vincolo di chiave esterna:Esteri errore di vincolo di chiave 1452 in MySQL - Magento importazione

`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)` 

Questo è il codice SQL che sta causando l'errore:

-- 
-- 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; 

Non mi sento molto a mio agio con le query SQL. Qualcuno potrebbe spiegarmi come funziona questa query e guidarmi a risolvere questo problema? Grazie.

risposta

16

Si sta tentando di aggiungere un record in catalog_eav_attribute, ma non si dispone di un record corrispondente nella eav_attribute che corrisponde a attribute_id

Se siete anche l'inserimento dei dati di massa in eav_attribute, mi sento di raccomandare a farlo prima, e quindi i dati sarebbero nella tabella prima che la chiave esterna su catalog_eav_attribute fosse necessaria per farvi riferimento.

Questo article discute come è possibile utilizzare:

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

Se non è possibile modificare l'ordine che si sta inserendo i dati. Devi solo assicurarsi che i dati segue le chiavi esterne una volta che tutto è stato inserito nel database, prima di poter riattivare il FOREIGN_KEY_CHECKS

+0

Grazie, ha funzionato. Vi sono state alcune altre query di 'ALTER TABLE' che hanno provocato un errore simile ma il tuo suggerimento mi ha aiutato a importare correttamente i dati. Grazie. – Nithin

+0

Grazie mille! Stavo cercando di importare un backup e aveva questo problema! Ha funzionato per me e sono riuscito a importare il DB con successo! – petsoukos

0

ho utilizzato uno strumento di riparazione del database, dopo che ha fatto questo in SQL:

DROP TABLE catalog_product_flat_1, catalog_product_flat_2, catalog_product_flat_3;

Ora l'indice è stato creato correttamente.

Problemi correlati