Pregunta

¿Qué debo hacer si los Atributos del Producto índice da un error como este:

Next exception 'Zend_Db_Statement_Exception' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '12692-214-1-11745' for key 'PRIMARY'' in /home/uitlaat/domains/uitlaatcity.nl/public_html/lib/Zend/Db/Statement/Pdo.php:234
Stack trace:
#0 /home/uitlaat/domains/uitlaatcity.nl/public_html/lib/Varien/Db/Statement/Pdo/Mysql.php(110): Zend_Db_Statement_Pdo->_execute(Array)
#1 /home/uitlaat/domains/uitlaatcity.nl/public_html/lib/Zend/Db/Statement.php(300): Varien_Db_Statement_Pdo_Mysql->_execute(Array)
#2 /home/uitlaat/domains/uitlaatcity.nl/public_html/lib/Zend/Db/Adapter/Abstract.php(479): Zend_Db_Statement->execute(Array)
#3 /home/uitlaat/domains/uitlaatcity.nl/public_html/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('INSERT INTO `ca...', Array)
#4 /home/uitlaat/domains/uitlaatcity.nl/public_html/lib/Varien/Db/Adapter/Pdo/Mysql.php(419): Zend_Db_Adapter_Pdo_Abstract->query('INSERT INTO `ca...', Array)
#5 /home/uitlaat/domains/uitlaatcity.nl/public_html/lib/Varien/Db/Adapter/Pdo/Mysql.php(1974): Varien_Db_Adapter_Pdo_Mysql->query('INSERT INTO `ca...', Array)
#6 /home/uitlaat/domains/uitlaatcity.nl/public_html/app/code/core/Mage/Catalog/Model/Resource/Product/Indexer/Eav/Source.php(276): Varien_Db_Adapter_Pdo_Mysql->insertArray('catalog_product...', Array, Array)
#7 /home/uitlaat/domains/uitlaatcity.nl/public_html/app/code/core/Mage/Catalog/Model/Resource/Product/Indexer/Eav/Source.php(257): Mage_Catalog_Model_Resource_Product_Indexer_Eav_Source->_saveIndexData(Array)
#8 /home/uitlaat/domains/uitlaatcity.nl/public_html/app/code/core/Mage/Catalog/Model/Resource/Product/Indexer/Eav/Source.php(84): Mage_Catalog_Model_Resource_Product_Indexer_Eav_Source->_prepareMultiselectIndex(NULL, NULL)
#9 /home/uitlaat/domains/uitlaatcity.nl/public_html/app/code/core/Mage/Catalog/Model/Resource/Product/Indexer/Eav/Abstract.php(50): Mage_Catalog_Model_Resource_Product_Indexer_Eav_Source->_prepareIndex()
#10 /home/uitlaat/domains/uitlaatcity.nl/public_html/app/code/core/Mage/Catalog/Model/Resource/Product/Indexer/Eav.php(185): Mage_Catalog_Model_Resource_Product_Indexer_Eav_Abstract->reindexAll()
#11 /home/uitlaat/domains/uitlaatcity.nl/public_html/app/code/core/Mage/Index/Model/Indexer/Abstract.php(143): Mage_Catalog_Model_Resource_Product_Indexer_Eav->reindexAll()
#12 /home/uitlaat/domains/uitlaatcity.nl/public_html/app/code/core/Mage/Index/Model/Process.php(209): Mage_Index_Model_Indexer_Abstract->reindexAll()
#13 /home/uitlaat/domains/uitlaatcity.nl/public_html/app/code/core/Mage/Index/Model/Process.php(255): Mage_Index_Model_Process->reindexAll()
#14 /home/uitlaat/domains/uitlaatcity.nl/public_html/shell/indexer.php(158): Mage_Index_Model_Process->reindexEverything()
#15 /home/uitlaat/domains/uitlaatcity.nl/public_html/shell/indexer.php(198): Mage_Shell_Compiler->run()
#16 {main}

Que tiene algunas soluciones, tal vez me ayuda si me truncar algunas tablas.

¿Fue útil?

Solución

Yo depurar paso a paso y encontrar exactamente el motivo de la traza dada anteriormente.Tengo un script personalizado para la importación de productos de Magento, y mientras que la creación de nuevos productos, script se conecta multiselect valores de atributo en el producto.Algunos de los productos tienen una opción de identificación de dos o más veces y durante la indexación de esto será la causa de algunos errores como "la Integridad de la violación de la restricción".Si puedo describir este código:

$_product->setSomeMultiselectAttribute(array(option_id_1, option_id_2, option_id_1));
$_product->save();

Después de finalizada la importación, hago de indexación, y la excepción que se da más arriba aparecerá.Eso es la forma en que me fijo mi error:

$_product->setSomeMultiselectAttribute(array_unique(array(option_id_1, option_id_2, option_id_1)));

Tal vez esto ayude a alguien en el futuro.Y la excepción se ha ido.

Otros consejos

En la mayoría de los casos esto está relacionado con el flat_catalog tablas de tener un problema con una clave que se inserta en la base de datos, es decir,una restricción de clave principal.Truncarlas es una buena opción, las claves serán borrados y usted puede volver a clasificar, luego de ellos.

En mysql: (tenga en cuenta que su plana tablas pueden tener nombres diferentes)

TRUNCATE TABLE `catalog_category_flat_store_1`;

Intente abrir desde el panel de administración os o a través de la terminal de ejecutar la reindexación de shell-script de Magento directorio raíz de la siguiente manera:

php shell/indexer.php --reindex catalog_product_flat 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top