Мой магазин не возвращает идентификатор кода и ломает ошибку 404. Magento - PullRequest
0 голосов
/ 12 сентября 2011

Я знаю, в чем проблема, но я не знаю, как ее исправить.Я только что перенес свой magento store локально и думаю, что некоторые данные могли быть потеряны при переносе БД.БД очень большая.В любом случае, когда я захожу на свою страницу администратора, я получаю сообщение об ошибке 404. Страница не найдена.

Я отладил проблему и приступил к работе.Исключение выдается в Mage / Core / Model / App.php.Строка 759 подлежит исполнению.Ниже приведен фрагмент кода.

Mage / Core / Model / App.php

    if (empty($this->_stores[$id])) {
        $store = Mage::getModel('core/store');
        /* @var $store Mage_Core_Model_Store */
        if (is_numeric($id)) {
            $store->load($id); // THIS ID IS FROM Mage_Core_Model_App::ADMIN_STORE_ID and its empty which causes the error
        } elseif (is_string($id)) {
            $store->load($id, 'code');
        }

        if (!$store->getCode()) { // RETURNS FALSE HERE BECAUSE NO ID Specified
            $this->throwStoreException();
        }
        $this->_stores[$store->getStoreId()] = $store;
        $this->_stores[$store->getCode()] = $store;
    }

Хранилище возвращает значение NULL, поскольку $ id равно NULL, поэтому оно не загружает никакую модель, которая объясняет, почемуон возвращает false при вызове getCode ()

enter image description here

[EDIT] Если вы хотите получить разъяснения, пожалуйста, запросите больше, прежде чем голосовать за мой пост.Помните, я все еще пытаюсь получить помощь, а не пренебречь.

Я использую версию 1.4.1.1.Когда я набираю URL для администратора, я получаю страницу 404.Я тщательно просмотрел код и обнаружил, что Model MAGE_CORE_MODEL_STORE :: getCode ();Возвращает Null, который вызывает исключение.и заканчивает сценарий.У меня нет никаких других деталей.Я также решил проблему, проверив базу данных, и это то, что снимок экрана.Показывает, что в коде Colunn есть фактические данные.

Итак, мой вопрос: почему Модель возвращает пустой столбец, когда столбец явно имеет значение.Что я могу сделать для дальнейшего устранения неполадок и выяснить, почему он не работает

[РЕДАКТИРОВАТЬ ОБНОВЛЕНИЕ НОВОГО]

Я провел некоторое исследование.причина, по которой он возвращает значение NULL, заключается в том, что передается идентификатор хранилища

Mage::getStoreConfigFlag('web/secure/use_in_adminhtml', Mage_Core_Model_App::ADMIN_STORE_ID); // THIS IS THE ID being specified

Mage_Core_Model_App :: ADMIN_STORE_ID не имеет значения, поэтому этот метод вызывает исключение.Не уверен, почему, как это исправить.

Ответы [ 2 ]

1 голос
/ 13 сентября 2011

Вам необходимо изменить идентификатор магазина администратора, веб-сайта и store_group на ноль. Это происходит из-за импорта mysql, который не сбрасывает значения автоинкремента, и Magento жестко кодирует идентификатор резервного хранилища в ноль.

См. этот ответ для получения дополнительной информации.

0 голосов
/ 16 июня 2018

Я знаю, что это старый пост, но я боролся с этой же вещью пару дней, прежде чем понять это. Я не уверен, что это как-то связано со способом резервного копирования БД, но когда я пытался импортировать базу данных Magento 1.9.x из резервной копии, у меня возникали всевозможные проблемы, подобные этой. Я смог исправить 404, выполнив описанные выше шаги, но затем были тонны других идентификаторов, которые были неправильно увеличены по всей БД, вызывая всевозможные проблемы с продуктами, меню и т. Д. Решением было добавить это в начале файл SQL

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT;
SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS;
SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION;SET NAMES utf8;
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; 
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO';
SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0;

и добавьте это в конец файла

SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT;
SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS;
SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION;
SET SQL_NOTES=@OLD_SQL_NOTES;

до импорта. Как только я это сделал, импорт прошел нормально, и все идентификаторы были такими, какими они должны быть. Надеюсь, это поможет кому-то из крайностей, как это сделал я.

Спасибо,

Tony

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...