Bienvenue, Invité
Merci de vous identifier ou de vous inscrire.    Mot de passe perdu?

[Résolu] 1.4 Réindexation des attributs de produits
(1 lecteur(s)) (1) Invité(s)
Aller en basPage: 1
SUJET:

[Résolu] 1.4 Réindexation des attributs de produits

#28453
chatlumo
Platinum Boarder
Messages: 365
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Lieu: Cachan, 94 Date anniversaire: 06/04

[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.
L'administrateur a désactivé l'accès public en écriture.
#28455
chatlumo
Platinum Boarder
Messages: 365
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Lieu: Cachan, 94 Date anniversaire: 06/04

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 ?
 
L'administrateur a désactivé l'accès public en écriture.
#28481
chatlumo
Platinum Boarder
Messages: 365
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Lieu: Cachan, 94 Date anniversaire: 06/04

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 ?
 
L'administrateur a désactivé l'accès public en écriture.
#28515
ceddddd
Platinum Boarder
Messages: 1560
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin bloggento ced__@hotmail.fr

Re:1.4 Réindexation des attributs de produits

Il y a 5 Mois, 4 Semaines
Karma: 22  
 
L'administrateur a désactivé l'accès public en écriture.
#28578
chatlumo
Platinum Boarder
Messages: 365
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Lieu: Cachan, 94 Date anniversaire: 06/04

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...
 
L'administrateur a désactivé l'accès public en écriture.
#28583
chatlumo
Platinum Boarder
Messages: 365
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Lieu: Cachan, 94 Date anniversaire: 06/04

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.
 
L'administrateur a désactivé l'accès public en écriture.
Revenir en hautPage: 1
Modérateur: admin, Gabriiiel