Экземпляр Magento указывает на неверную базу данных - PullRequest
2 голосов
/ 23 декабря 2010

Кто-нибудь когда-нибудь имел эту проблему? local.xml был изменен. Таблица core_config_data была изменена для незащищенного и безопасного URL-адреса, а также домена cookie. Директории кэша были стерты, значения сеанса были очищены, таблицы журналов были обрезаны.

находится под контролем версий с Subversion. также запустите find, чтобы определить, где он может получить IP-адрес рабочей БД.

find ~/path/to/application -type f -print0 | xargs -0 grep -l "IP Of incorrect DB"

еще выдает ошибку на БД

SQLSTATE[HY000] [2003] Can't connect to MySQL server on 'IP of incorrect DB' (4)

Чрезвычайно сбит с толку и не может найти меня там, где он мог бы получить IP производственной БД.

local.xml указывает на адрес разработки.

Ответы [ 6 ]

4 голосов
/ 23 декабря 2010

Возможно, вы захотите проверить, что каталог magento / var /, а также все его подкаталоги доступны для записи веб-сервером. Если эти каталоги недоступны для записи, Magento использует / tmp /, что может вызвать странные эффекты и даже конфликтовать с другими сайтами Magento.

3 голосов
/ 02 марта 2011

Просто сталкивался с этим, когда у меня была похожая проблема. Следуя предложению Алана Шторма о сбросе имен файлов конфигурации, обнаружил проблему. Я сделал новую установку, прежде чем копировать файлы db и config из другого экземпляра, и переименовал существующий local.xml в localorig.xml. Он загружался после local.xml и возвращал неправильные значения в полях конфигурации db.

Мораль: если вы создаете резервную копию любого файла конфигурации в той же папке, измените расширение.

Спасибо, Алан.

3 голосов
/ 23 декабря 2010

Убедитесь, что вы редактируете файл конфигурации, который, как вы думаете, вы редактируете. Посмотрите на следующий код

#File: app/code/core/Mage/Core/Model/Config.php

public function loadBase()
{
    $etcDir = $this->getOptions()->getEtcDir();
    $files = glob($etcDir.DS.'*.xml');
    $this->loadFile(current($files));
    while ($file = next($files)) {
        $merge = clone $this->_prototype;
        $merge->loadFile($file);
        $this->extend($merge);
    }
    if (in_array($etcDir.DS.'local.xml', $files)) {
        $this->_isLocalConfigLoaded = true;
    }
    return $this;
}

Это код, который сливается в вашем файле local.xml с деревом конфигурации. Добавьте код отладки

public function loadBase()
{
    var_dump('Called ' . __METHOD__);   //ensure we're being called    
    $etcDir = $this->getOptions()->getEtcDir();
    $files = glob($etcDir.DS.'*.xml');
    $this->loadFile(current($files));
    while ($file = next($files)) {
        var_dump($file);                    //dump the file path being loaded to the browser
        $merge = clone $this->_prototype;
        $merge->loadFile($file);
        $this->extend($merge);
    }
    if (in_array($etcDir.DS.'local.xml', $files)) {
        $this->_isLocalConfigLoaded = true;
    }
    exit;                                   //bail out early
    return $this;
}

Загрузите ваш сайт в браузере и наблюдайте пути, выводимые через var_dump. Убедитесь, что загружаемые файлы - это те файлы, которые, по вашему мнению, загружаются. Имейте в виду, что, похоже, каждый файл XML из папки etc загружается и объединяется.

Если пути соответствуют вашим ожиданиям, добавьте код отладки для вывода содержимого загружаемых файлов XML.

public function loadBase()
{
    var_dump('Called ' . __METHOD__ . '');  //ensure we're being called    
    $etcDir = $this->getOptions()->getEtcDir();
    $files = glob($etcDir.DS.'*.xml');
    $this->loadFile(current($files));
    while ($file = next($files)) {
        header('Content-Type: text/plain'); //so the browser renders it as plain text
        echo file_get_contents($file);      //dump the contents of the file being loaded to the browser
        $merge = clone $this->_prototype;
        $merge->loadFile($file);
        $this->extend($merge);
    }
    if (in_array($etcDir.DS.'local.xml', $files)) {
        $this->_isLocalConfigLoaded = true;
    }
    exit;                                   //bail out early
    return $this;
}

Если информация о базе данных в этих файлах верна, то ваша система была настроена и / или взломана таким образом, что существует код, вызывающий другой сервер базы данных.

Если это так, вам нужно установить что-то вроде xDebug, чтобы получать достойные отчеты об ошибках. Это позволит вам найти точный код, который выдает ошибку, после чего вы можете отследить его, откуда он получает информацию о соединении.

Удачи.

1 голос
/ 24 марта 2014

У меня была похожая проблема только сейчас.Я дважды проверил файл local.xml, и это было определенно правильно, однако.Magento все еще использовал старого пользователя для доступа к базе данных.

Проблема была мгновенно решена с помощью: rm -rf var/cache/* - немедленно это было сделано, сайт появился.* Похоже, что Magento кэширует содержимое local.xml в области кэша.Не очень полезно.

Очевидно, также рекомендуется дважды проверить файл local.xml, но в этом случае это было на 100% правильно.

1 голос
/ 23 декабря 2010

Попробуйте установить Configviewer от Alan Storm и проверить сгенерированный XML, чтобы подтвердить, что сведения о соединении указывают на спецификации local.xml. Возможно, что один из модулей использует ресурс не по умолчанию или какую-то другую причуду.

Можете ли вы опубликовать некоторую трассировку стека в вашем вопросе (запутанную, если вам нужно), чтобы показать, какой модуль вызывает эту ошибочную БД?

0 голосов
/ 23 декабря 2010

Просто чтобы попытаться помочь. Можете ли вы проверить конфигурацию Apache? Что-то вроде «apache2 -S», чтобы увидеть, какие виртуальные хосты используются (и особенно обратите внимание на первый по умолчанию). Вы можете проверить, что все ваши виртуальные хосты (если вы работаете с виртуальными хостами) используют правильный documentRoot. У вас нет другой копии исходников на вашем сервере разработки?

Я имею в виду, вы уверены, что у вас работает правильный экземпляр magento по URL, который вы используете в своем браузере? Точно так же вы уверены в каталогах кеша, используемых в вашей установке - видите ли вы какие-либо изменения в этих каталогах с момента удаления?

...