In my magento 2.3.5 instance I am trying to switch price to global scope. I don't need the function to have different price for a product in each store view.

Unfortunately this store is migrated from magento 1 and there I wasn't use Global scope for price.

So now in Magento 2 when I switch price to global magento isn't taking the default store view price to all store views. Because of my large catalog some products had in some store views different price than default store view.

I can identify the products and when I edit them I see the right price in default store view and the wrong price in another store view.

But when I try to change the wrong price, when I press save magento is changing the price in default store only and in the other store view I have the old wrong price.

Has anyone this issue? Is there a way to solve this without changing all my catalog prices?

I only need to change scope to global and keep default store view price to all my store views

1 Answer 1


There is a problem in Magento that it doesn't take price scope into account while loading product EAV attributes. As a solution, you can tweak core code


Or remove obsolete data manually how is described below. Product price data is stored in catalog_product_entity_decimal MySQL table. You should delete all records for price attribute where store_id is not 0. Lookup price attribute ID by query:

SELECT `attribute`.`attribute_id` 
FROM `eav_attribute` AS `attribute` 
WHERE `attribute`.`attribute_code` = 'price' AND `attribute`.`entity_type_id` = (
    SELECT `entity_type`.`entity_type_id` FROM `eav_entity_type` AS `entity_type` WHERE `entity_type`.`entity_type_code` = 'catalog_product'

Price attribute ID equals to 77 in our case. Query to select obsolete price records

SELECT * FROM `catalog_product_entity_decimal` WHERE `store_id` <> 0 AND `attribute_id` = 77;

The result should be not empty in your case. To remove records run the query

DELETE FROM `catalog_product_entity_decimal` WHERE `store_id` <> 0 AND `attribute_id` = (SELECT `attribute`.`attribute_id` 
FROM `eav_attribute` AS `attribute` WHERE `attribute`.`attribute_code` = 'price' AND `attribute`.`entity_type_id` = (
    SELECT `entity_type`.`entity_type_id` FROM `eav_entity_type` AS `entity_type` WHERE `entity_type`.`entity_type_code` = 'catalog_product'

Finally, reindex data

php bin/magento indexer:reindex

Important Note! Backup your database before manipulations to be able to restore it if needed.

  • what a great answer! Working! Thank you so much!
    – G. G.
    Aug 1, 2020 at 19:00
  • So this really needs to be fixed in Magento 2 core code, is there a github issue? Having this problem in a 2.3.0 store, Price is Grayed out set to Use Default Value even though I have scoped price per website. Dec 16, 2020 at 20:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.