Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Magento SQLSTATE-Fehler, wenn noch ein Artikel im Produktinventar vorhanden ist

Wir hatten früher ein ähnliches Problem mit Magento 1.7, es geschah, weil wir einen "neuen" Produkttyp eingeführt haben, der ein Bündel konfigurierbarer Produkte ist. In diesem Fall hatten wir einige Produkte, die gleichzeitig Eltern einiger Produkte und Kinder waren von einigen anderen (den Paketen) auf diese Weise, als _copyRelationIndexData von reindexProductIds aufgerufen wurde. Die catalog_product_index_price_tmp-Tabelle wurde mit einigen Zeilen gefüllt, die zu "zusammengesetzten Produkten" gehörten, was die "Verletzung der Integritätsbeschränkung" verursachte, wenn reindexEntity aufgerufen wurde. Kurz gesagt, wir haben die Methode _copyRelationIndexData auf diese Weise überschrieben :

protected function _copyRelationIndexData($parentIds, $excludeIds = null)
    {
        if(!is_null($excludeIds) && is_array($excludeIds)){
            $excludeIds = array_merge($excludeIds,$parentIds);
        }
        return parent::_copyRelationIndexData($parentIds, $excludeIds);
    }