[Résolu] 1.4 Réindexation des attributs de produits (1 lecteur(s)) (1) Invité(s)
 | | |
|
SUJET: [Résolu] 1.4 Réindexation des attributs de produits
|
|
|
[Résolu] 1.4 Réindexation des attributs de produits Il y a 5 Mois, 4 Semaines
|
Karma: 2
|
|
Bonjour,
Dans la 1.4, lorsque je choisis de réindexer les attributs de produits, le statut passe à "en cours de traitement", cela me pareit bien long, 1h après c'est toujours le même état.
Par ailleurs, j'ai un message d'erreur dans un encadré rouge qui dit "Some problem with reindexing process." sans plus détail... Difficile d'pagir en conséquence...
Avez-vous une idée du problème ?
Merci
|
|
|
|
Dernière édition: 12/03/10 à 17:36 Par chatlumo.
|
|
|
Re:1.4 Réindexation des attributs de produits Il y a 5 Mois, 4 Semaines
|
Karma: 2
|
En activant les logs et en allant voir le log exception.log, j'obtiens :
| Code : |
2010-03-11T14:16:50+00:00 DEBUG (7): Exception message: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`boutique/catalog_product_index_eav`, CONSTRAINT `FK_CATALOG_PRODUCT_INDEX_EAV_ENTITY` FOREIGN KEY (`entity_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE C)
Trace: #0 /home/boutique/www/lib/Zend/Db/Statement.php(300): Zend_Db_Statement_Pdo->_execute(Array)
#1 /home/boutique/www/lib/Zend/Db/Adapter/Abstract.php(468): Zend_Db_Statement->execute(Array)
#2 /home/boutique/www/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('INSERT INTO cat...', Array)
#3 /home/boutique/www/lib/Varien/Db/Adapter/Pdo/Mysql.php(333): Zend_Db_Adapter_Pdo_Abstract->query('INSERT INTO cat...', Array)
#4 /home/boutique/www/app/code/core/Mage/Index/Model/Mysql4/Abstract.php(146): Varien_Db_Adapter_Pdo_Mysql->query('INSERT INTO cat...')
#5 /home/boutique/www/app/code/core/Mage/Index/Model/Mysql4/Abstract.php(121): Mage_Index_Model_Mysql4_Abstract->insertFromSelect('SELECT * FROM c...', 'catalog_product...', Array, false)
#6 /home/boutique/www/app/code/core/Mage/Index/Model/Mysql4/Abstract.php(75): Mage_Index_Model_Mysql4_Abstract->insertFromTable('catalog_product...', 'catalog_product...', false)
#7 /home/boutique/www/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Indexer/Eav/Abstract.php(51): Mage_Index_Model_Mysql4_Abstract->syncData()
#8 /home/boutique/www/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Indexer/Eav.php(184): Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Indexer_Eav_Abstract->reindexAll()
#9 /home/boutique/www/app/code/core/Mage/Index/Model/Indexer/Abstract.php(125): Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Indexer_Eav->reindexAll()
#10 /home/boutique/www/app/code/core/Mage/Index/Model/Process.php(139): Mage_Index_Model_Indexer_Abstract->reindexAll()
#11 /home/boutique/www/app/code/core/Mage/Index/Model/Process.php(167): Mage_Index_Model_Process->reindexAll()
#12 /home/boutique/www/app/code/core/Mage/Index/controllers/Adminhtml/ProcessController.php(124): Mage_Index_Model_Process->reindexEverything()
#13 /home/boutique/www/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_Index_Adminhtml_ProcessController->reindexProcessAction()
#14 /home/boutique/www/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('reindexProcess')
#15 /home/boutique/www/app/code/core/Mage/Core/Controller/Varien/Front.php(177): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#16 /home/boutique/www/app/code/core/Mage/Core/Model/App.php(304): Mage_Core_Controller_Varien_Front->dispatch()
#17 /home/boutique/www/app/Mage.php(596): Mage_Core_Model_App->run(Array)
#18 /home/boutique/www/index.php(78): Mage::run('', 'store')
#19 {main}
|
Je vois donc que c'est une histoire de contraintes sur la table catalog_product_index_eav mais comment savoir précisément les données qui posent problème ?
|
|
|
|
|
|
|
Re:1.4 Réindexation des attributs de produits Il y a 5 Mois, 4 Semaines
|
Karma: 2
|
|
Bon c'est la cata. J'ai passé de longues heures sans résultat. J'ai fait la réparation de la base avec l'outil magento dB repair mais sans plus de succès.
Comment puis-je trouver les données qui posent problème ?
Dans les logs, y a pas moyen d'avoir les requêtes SQL non tronquées ?
|
|
|
|
|
|
|
Re:1.4 Réindexation des attributs de produits Il y a 5 Mois, 4 Semaines
|
Karma: 22
|
|
|
|
|
|
|
|
|
Re:1.4 Réindexation des attributs de produits Il y a 5 Mois, 4 Semaines
|
Karma: 2
|
|
Merci mais ça n'a pas répondu au problème.
Cependant j'ai réinstallé ma base en local et activé les log des requêtes SQL dans mySQL, j'ai donc pu identifier cette saleté de requêtes :
START TRANSACTION;
DELETE FROM `catalog_product_index_eav`;
ALTER TABLE catalog_product_index_eav DISABLE KEYS;
INSERT INTO catalog_product_index_eav SELECT * FROM catalog_product_index_eav_idx;
ROLLBACK;
Je suppose que si la requête se passait correctement, à la place du :
ROLLBACK;
on aurait :
ALTER TABLE catalog_product_index_eav ENABLE KEYS;
COMMIT;
Le problème se passe donc sur :
INSERT INTO catalog_product_index_eav SELECT * FROM catalog_product_index_eav_idx;
et déclenche l'erreur :
#1452 - Cannot add or update a child row: a foreign key constraint fails (`cosmetemp/catalog_product_index_eav`, CONSTRAINT `FK_CATALOG_PRODUCT_INDEX_EAV_ENTITY` FOREIGN KEY (`entity_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE )
Je comprends pas pourquoi jai ce problème alors que ma table catalog_product_index_eav est vide...
Si vous avez une idée de comment je peux appronfondir le problème...
|
|
|
|
|
|
|
Re:1.4 Réindexation des attributs de produits Il y a 5 Mois, 4 Semaines
|
Karma: 2
|
|
EUREKA !
En tentant de comparer les données entre la table catalog_product_entity et catalog_product_index_eav_idx j'ai trouvé 2 enregistrements.
En remontant dans les requêtes exécutées, j'ai trouvé celle qui insérait ces données :
INSERT IGNORE `catalog_product_index_eav_idx` SELECT `l`.`parent_id`, `i`.`attribute_id`, `i`.`store_id`, `i`.`value` FROM `catalog_product_relation` AS `l`
INNER JOIN `core_store` AS `cs`
INNER JOIN `catalog_product_index_eav_idx` AS `i` ON l.child_id=i.entity_id AND cs.store_id = i.store_id
Puis je suis allé voir dans la table catalog_product_relation où j'ai appris qu'elle était liée aux produits configurables et packagés. Et effectivement l'id du produit parent n'existait pas, j'ai donc supprimé ces 2 enregistrements et maintenant l'indexation fonctionne.
Ouf, c'était assez galère.
Conclusion, pour ceux qui utilisent Magento depuis un certain temps, je vois que les MAJ de la BDD est un peu bancale.
Avec l'outil Magento Database Repair Tool, ça permet de mettre sa base d'applomb, notamment pour des tables qui seraient restées en MyISAM. Reste le problème des contraintes enfin ajoutées qui peuvent mettre le désordre la dedans, mais ça permet justeent de sécuriser ses données à l'avenir.
|
|
|
|
|
|
 | | |
|