Abbiamo avuto un problema simile su Magento 1.7, è successo perché abbiamo introdotto un "nuovo" tipo di prodotto che è un bundle di prodotti configurabili. In questo caso avevamo alcuni prodotti che erano allo stesso tempo genitori di alcuni prodotti e figli di alcuni altri (quelli del bundle) in questo modo quando _copyRelationIndexData è stato chiamato da reindexProductIds catalog_product_index_price_tmp la tabella è stata riempita con alcune righe appartenenti a "prodotti compositi" causando la "violazione del vincolo di integrità" quando viene chiamato reindexEntity. Per farla breve, abbiamo sovrascritto il metodo _copyRelationIndexData in questo modo :
protected function _copyRelationIndexData($parentIds, $excludeIds = null)
{
if(!is_null($excludeIds) && is_array($excludeIds)){
$excludeIds = array_merge($excludeIds,$parentIds);
}
return parent::_copyRelationIndexData($parentIds, $excludeIds);
}