Удаление веб-сайта в Magento выдает ошибку страница не найдена


У меня есть несколько веб-сайтов в магазине. Я хочу удалить два из них. Включая основной веб-сайт и его магазины и просмотры магазинов. После того, как я удаляю их, когда я пытаюсь получить доступ к своему сайту с веб-сайтов, которые не удалены, отображается ошибка "Страница не найдена". Что может быть причиной этого и как я могу это решить?

Author: jdhaar, 2013-07-19

3 answers

Вы не должны удалять магазин с идентификатором 1.
В методе Mage_Code_Model_App::getStore есть такой

if (!Mage::isInstalled() || $this->getUpdateMode()) {
   return $this->_getDefaultStore();
}

Это означает, что при установке или запуске сценариев обновления результат _getDefaultStore используется в качестве хранилища.

_getDefaultStore() выглядит примерно так:

protected function _getDefaultStore()
{
    if (empty($this->_store)) {
        $this->_store = Mage::getModel('core/store')
            ->setId(self::DISTRO_STORE_ID)
            ->setCode(self::DISTRO_STORE_CODE);
    }
    return $this->_store;
} 

И поскольку константа DISTRO_STORE_ID равна 1, это означает, что для установки и запуска сценариев обновления используется хранилище с идентификатором 1. Его удаление может привести к сбоям в работе.
Попробуйте изменить идентификатор представления магазина (по умолчанию один) к 1. Ограничения на таблицы должны изменить его везде. Этот процесс может занять некоторое время, так что наберитесь терпения. И создайте резервную копию своей базы данных, прежде чем пытаться это сделать.

 6
Author: Marius, 2013-07-19 13:46:27

Кажется, я понял. Прежде всего, я сделал резервную копию своей базы данных, так что спасибо @Marius:) После множества переустановок БД и различных испытаний я обнаружил, что хитрость заключается в коде веб-сайта по умолчанию. После того, как я изменил свой веб-сайт по умолчанию, я удалил собственный Main Website Magento и изменил код своего сайта на base, так как это то, что Magento предоставляет основному веб-сайту. Затем я запустил свой магазин один раз, и после того, как значение было сохранено в БД, и все работало нормально, я снова изменил код по умолчанию сайт к его оригиналу из базы. Оказывается, сохранение "базы" в качестве кода необходимо только один раз, чтобы настроить все значения в связанных таблицах. Спасибо всем за то, что помогли мне в правильном направлении. :)

 1
Author: jdhaar, 2013-07-20 12:24:50

Я собираюсь обновить свои замечания здесь для справки и для всех тех, кто хочет выполнить эту задачу (удаление всего веб-сайта, включая основной веб-сайт с кодом магазина 1)

1) Delete all web sites except The one you want to keep from GUI (delete base site at the end)
2) Now delete base website you will have only one site left in DB which you want to keep.(after this everything collapse)
3) Run query: UPDATE `core_store` SET `store_id`='1' WHERE `store_id`='7';
(change reaming website's store code to 1 your front-end starts rendering )
4) For admin need to change urls in core_config_table
and that's it.

Вы можете столкнуться еще с несколькими проблемами или ошибками, в зависимости от вашего проекта, вы также должны их решить, но основные шаги те же.

На веб-сайте удаления он удалит все свои данные, но даже тогда вы можете проверить это, выполнив следующие запросы:

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));
DELETE 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
 0
Author: Hassan Ali Shahzad, 2019-10-24 06:47:34