I have a Magento store that has around 3,000 products. Almost all of these products have a single image attached to it.
For some reason, even though I set the small
I used stereo_world's method on magento 1.7.0.2 and it worked great. (I can't upvote his answer because I'm new to stackoverflow)
I don't know where he is seeing the attribute id in the attribute panel, because I don't see a numerical id there at all. I found the ids (85,86,87) by opening up phpMyAdmin and looking in eav_attribute table.
As clockworkgeek pointed out - reindex/cache flush are necessary.
Just as a warning to anyone (like myself!) who wants to try out this script. I ran this without thinking and it changed all the product names!
So my query looks like:
UPDATE catalog_product_entity_media_gallery AS mg,
catalog_product_entity_media_gallery_value AS mgv,
catalog_product_entity_varchar AS ev
SET ev.value = mg.value
WHERE mg.value_id = mgv.value_id
AND mg.entity_id = ev.entity_id
AND ev.attribute_id IN (85,86,87)
AND mgv.position = 1;
After making a change like that to the database, even if successful, you would need to rebuild the images cache in Cache Management.
You might be able to do it with a script like this and not worry about caching or indexing.
<?php
require 'app/Mage.php';
Mage::app();
$products = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect('*');
foreach ($products as $product) {
if (!$product->hasImage()) continue;
if (!$product->hasSmallImage()) $product->setSmallImage($product->getImage());
if (!$product->hasThumbnail()) $product->setThumbnail($product->getImage());
$product->save();
}
?>Done!
Save this in your Magento directory and access it by typing the URL into your browser's address bar. I haven't tested this script yet.
i know this is an old post, however in case anyone has the same issue then the problem was with the ev.attribute_id. Updated code below:
UPDATE
catalog_product_entity_media_gallery AS mg,
catalog_product_entity_media_gallery_value AS mgv,
catalog_product_entity_varchar AS ev
SET
ev.value = mg.value
WHERE
mg.value_id = mgv.value_id
AND mg.entity_id = ev.entity_id
AND ev.attribute_id IN (74, 75, 76)
AND mgv.position = 1
Thanks.
I got it working using the following trick for Magento 1.9.2.2 version:
INSERT INTO catalog_product_entity_varchar
(entity_type_id, attribute_id, store_id, entity_id, value)
SELECT
entity_type_id, 75, store_id, entity_id, value
FROM
catalog_product_entity_varchar
WHERE
attribute_id = 74
Then replace value 75 with 76 and import the query again. Be sure to replace the attribute id values to your own
@user2321249 To find the attribute id in CE 1.9.1, go to the attribute information page and look at the URL. For example, from the Admin backend, select Catalog->Manage Attributes. Find the thumbnail attribute and select it. With my system the URL is:
www.example.com/magento/index.php/admin/catalog_product_attribute/edit/attribute_id/87/key/f759b57c21a7c75f33095a243f44b2a5/
You can easily tell the thumbnail attribute_id in my system is 87. Do the same for the Base Image and Small Image.