Eliminazione delle immagini dal Database MySql di Magento
Su Magento può capitare di voler eliminare le immagini dei prodotti direttamente dal database. Per farlo occorre modificare i dati delle seguenti tabelle coinvolte sono:- catalog_product_entity_varchar
- catalog_product_entity_media_gallery
- catalog_product_entity_media_gallery_value
Le tabelle della galleria
Le seguenti tabelle:- catalog_product_entity_media_gallery
- catalog_product_entity_media_gallery_value
DELETE FROM catalog_product_entity_media_gallery_value
DELETE FROM catalog_product_entity_media_galleryA causa delle Foreign Key un comando TRUNCATE non funzionerebbe.
Infine si possono eliminare le immagini dalla tabella:
- catalog_product_entity_varchar
E' possibile utilizzare la seguente istruzione SQL:
DELETE FROM `catalog_product_entity_varchar` WHERE `attribute_id`=85 OR `attribute_id`=86 OR `attribute_id`=87I valori 85 - 86 - 87 della clausola WHERE rappresentano i vari formati di immagine disponibili per il prodotto su Magento (image, thumb, small).
Osservazioni sulla struttura della tabella catalog_product_entity_varchar e sul database EAV di Magento
Questa tabella contiene gli attributi di tipo VARCHAR dei prodotti inseriti. In Magento la maggior parte delle informazioni relative ai prodotti sono gestite come attributi. Quindi un'istruzione DELETE senza nessuna WHERE specificata come nel caso delle tabelle relative alla galleria delle immagini cancellerebbe, non solo i riferimenti ai file delle immagini dei prodotti ma anche altre informazioni.I campi della tabella sono i seguenti:
* value_id, la chiave primaria della tabella
* entity_type_id, il tipo di entità, nel caso dei prodotti del catalogo il valore è sempre 4
* attribute_id, il tipo di attributo da cancellare
* store_id, l'id del negozio (sarà sempre 1 se non gestite un sito multilingua o un multistore)
* entity_id, l'id del recordprodotto
* value, il valore effettivamente inserito
Se volete verificare quali informazioni sono disponibili per un singolo prodotto (supponiamo quello con id 363) potete quindi eseguire la seguente query:
SELECT * FROM `catalog_product_entity_varchar` WHERE `entity_id` =363;troverete tutti gli attributi assegnati a quel prodotto. Per conoscere a cosa corrisponde il valore dell'attribute_id, è sufficiente andare nel pannello di controllo su CATALOGO->ATTRIBUTI->GESTIONE ATTRIBUTI e verificare il valore dell'attributo.
Se filtrerete i nomi degli attributi con i seguenti codici attributo:
* thumbnail
* image
* small_image
troverete appunto gli id 85, 86 e 87.
Per saperne di più sulla struttura EAV del database di Magento:
- http://fishpig.co.uk/magento/tutorials/eav-database-structure/ (tutorial in inglese)
- http://sqlblog.com/blogs/aaron_bertrand/archive/2009/11/19/what-is-so-bad-about-eav-anyway.aspx (appunti in inglese sulla performance di un database EAV)
Nessun commento:
Posta un commento