Pix*_*dia 3 mysql magento magento-1.7
在我正在进行的一个大型Magento项目中(从先前的代理商那里继承),该安装程序在18个网站上拥有41家商店。
该站点有40k产品和5k类别-因此,您可以想象db膨胀得令人难以置信。
我想删除除2个网站和2个商店视图(每个网站一个)之外的所有视图,但是使用GUI失败-在删除商店视图时,页面变为空白。尽管db确实从core_store表中删除了存储,但它感觉很不稳定。我也无法删除其网站的默认商店视图-即使有问题的网站不是安装的默认网站。
尝试删除网站时会显示“目前无法删除网站,请稍后再试”。
是否有一种干净安全的方法可以直接从数据库中删除所有多余的商店,其父网站以及与之相关的所有数据?
谢谢。
我自己在继承的旧系统上面临着同样的任务。我删除实际商店的过程非常简单:只需进入数据库并从中删除行core_website。这将触发级联删除,从而擦除和中的相应记录,core_store并store_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));
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));
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);
DELETE FROM sales_flat_order WHERE store_id IS NULL
我希望这将对其他进行多商店清理的人有用。我计划更新此答案,因为我发现了进行此清理的更有效方法。