Wie kann ich einen Verstoß gegen die Integritätsbeschränkung gegen 'linked_product_id' beheben (beim Import)

magento.stackexchange https://magento.stackexchange.com/questions/6036

Frage

Während des Imports bekomme ich Fehler wie

PHP Fatal error:  Uncaught exception 'PDOException' with message 
    'SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or 
    update a child row: a foreign key constraint fails   
    (`foo`.`catalog_product_link`, CONSTRAINT 
    `FK_CAT_PRD_LNK_LNKED_PRD_ID_CAT_PRD_ENTT_ENTT_ID` FOREIGN KEY 
    (`linked_product_id`) REFERENCES `catalog_product_entity` (`entity_id`)' 
    in lib/Zend/Db/Statement/Pdo.php:228

Ich habe mich bereits geändert Mage_ImportExport_Model_Import_Entity_Product::_saveLinks() zum Debuggen der einzelnen Einsätze:

        if ($linkRows) {
            foreach($linkRows as $row) {
                $adapter->insertOnDuplicate(
                    $mainTable,
                    $row,
                    array('link_id')
                );
            }

Und jetzt bekomme ich linked_product_id' cannot be null'

Der volle Import stoppt aufgrund dieses Fehlers.

War es hilfreich?

Lösung

Sie können einen Debug -Code in hinzufügen \Mage_ImportExport_Model_Import_Entity_Product::_saveLinks um dieses Problem aufzuspüren und zu vermeiden, dass der volle Import stoppt:

    if ((isset($this->_newSku[$linkedSku]) || isset($this->_oldSku[$linkedSku]))
            && $linkedSku != $sku) {
        if (isset($this->_newSku[$linkedSku])) {
            $linkedId = $this->_newSku[$linkedSku]['entity_id'];
        } else {
            $linkedId = $this->_oldSku[$linkedSku]['entity_id'];
        }
        $linkKey = "{$productId}-{$linkedId}-{$linkId}";


// [BEGIN CHANGE] - Comment: Debug
        if ($linkedId == null) {
            Mage::logException(
                new Exception(
                    sprintf('Debug - WARNING: Orphaned link skipped: From SKU %s (ID %d) to SKU %s, Link type id: %d',
                        $sku, $productId, $linkedSku, $linkId)
                )
            );
            continue;
        }
// [END]

Dadurch protokolliert eine Ausnahme mit detaillierten Informationen zu den Produkten und Verknüpfungen, um die der Fehler geht.

In meinem Fall gab es Fehler mit den als verwandten Produkten bezeichneten Produkten. Diese Produkte wurden also während des Imports übersprungen und Magento erzeugte Links zu "Null".

Magento 2 Pullrequest

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top