Magento 1.7如何删除现有的多余网站和商店

Pix*_*dia 3 mysql magento magento-1.7

在我正在进行的一个大型Magento项目中(从先前的代理商那里继承),该安装程序在18个网站上拥有41家商店。

该站点有40k产品和5k类别-因此,您可以想象db膨胀得令人难以置信。

我想删除除2个网站和2个商店视图(每个网站一个)之外的所有视图,但是使用GUI失败-在删除商店视图时,页面变为空白。尽管db确实从core_store表中删除了存储,但它感觉很不稳定。我也无法删除其网站的默认商店视图-即使有问题的网站不是安装的默认网站。

尝试删除网站时会显示“目前无法删除网站,请稍后再试”。

是否有一种干净安全的方法可以直接从数据库中删除所有多余的商店,其父网站以及与之相关的所有数据?

谢谢。

Eri*_*and 5

我自己在继承的旧系统上面临着同样的任务。我删除实际商店的过程非常简单:只需进入数据库并从中删除行core_website。这将触发级联删除,从而擦除和中的相应记录,core_storestore_group触发对商店/网站范围内的EAV值以及其他各种事件的另一级联删除。您可以通过运行以下查询找到完整列表(用db名称代替your_magento_database):

SELECT table_name 
FROM   referential_constraints 
WHERE  constraint_schema = 'your_magento_database' 
       AND referenced_table_name IN( 'core_store', 'core_website' ) 
       AND delete_rule = 'CASCADE' 
Run Code Online (Sandbox Code Playgroud)

史蒂夫·罗宾斯(Steve Robbins)提到,即使删除了这些内容,您仍然会得到许多“孤立的”记录,但这些级联的删除操作并不会删除这些记录。下面列出了在删除网站/商店之后我(主要是手动)要进行清理的工作。

  • 客户组(每个客户组都有自己的价格指数;导致巨大的数据库膨胀)
  • 产品展示

    DELETE FROM catalog_product_entity WHERE entity_id NOT IN (SELECT product_id FROM catalog_product_website);

  • 分类
  • 目录规则

    DELETE FROM catalogrule WHERE rule_id NOT IN (SELECT DISTINCT rule_id FROM catalogrule_website);

  • 购物车价格规则

    DELETE FROM salesrule WHERE (rule_id NOT IN (SELECT DISTINCT rule_id FROM salesrule_website));

  • 配置数据(看起来像Magento 1.9自动删除了这些,但这是要确认的查询)

    SELECT * FROM core_config_data WHERE (scope="stores" AND scope_id NOT IN (SELECT store_id FROM core_store)) OR (scope="websites" AND scope_id NOT IN (SELECT website_id FROM core_website));

  • CMS页面

    DELETE FROM cms_page WHERE page_id NOT IN (SELECT DISTINCT page_id FROM cms_page_store);

  • 静态块

    DELETE FROM cms_block WHERE block_id NOT IN (SELECT DISTINCT block_id FROM cms_block_store);

  • 小部件实例
  • 平面类别/产品表
  • 电子邮件范本
  • 税法,税种,税率
  • 管理员用户,管理员角色
  • API用户
  • 订单:我宁愿保留这些订单,因为性能收益微乎其微,您以后可能需要这些数据,但只有您知道最适合您的项目的订单

    DELETE FROM sales_flat_order WHERE store_id IS NULL

我希望这将对其他进行多商店清理的人有用。我计划更新此答案,因为我发现了进行此清理的更有效方法。