php - Установка Magento жалуется на отсутствие InnoDB, когда он доступен




4 Answers

Строка 59 файла app/code/core/Mage/Install/Model/Installer/Db/Mysql4.php

Заменить:

public function supportEngine()
{
    $variables  = $this->_getConnection()
        ->fetchPairs('SHOW VARIABLES');
    return (!isset($variables['have_innodb']) || $variables['have_innodb'] != 'YES') ? false : true;
}

с этим:

public function supportEngine()
{
    $variables  = $this->_getConnection()
        ->fetchPairs('SHOW ENGINES');
    return (isset($variables['InnoDB']) && $variables['InnoDB'] != 'NO');
}

Во время установки Magento производит следующую ошибку:

Сервер базы данных не поддерживает механизм хранения InnoDB.

Я исправил все зависимости для Magento и дважды проверил MySQL в командной строке с помощью SHOW ENGINES и, безусловно, имел доступ к InnoDB (также механизм хранения по умолчанию).

Это не проблема с доступом к конфигурации MySQL, которую другие могли видеть при их установке.

Примечание. Это выполняется на Mac Pro (с простой DNS-перестройкой хостов для имени домена, которое я разрабатываю для).




ver 1.9.1.0 downloader.php

Поместите это для тех, кто использует downloader.php настоящее время 1.9.1.0 установщик 1.9.1.0 .

Если вы счастливы, что ваша база данных MySQL поддерживает InnoDB (это значение DEFAULT) в более поздних версиях. Вы можете безопасно редактировать файл, чтобы удалить чек и всю загрузку.

    /**
     * Check availabe InnoDB on database.
     *
     * @return Magento_Downloader_Validator
     */
    protected function _checkDbInnoDb()
    {
        if (!$this->_connection) {
            return $this;
        }
        $this->addMessage('Database server supports InnoDB storage engine');
        return $this;
    }



public function supportEngine()
{
    $variables  = $this->_getConnection()->fetchPairs('SHOW ENGINES');
    return (isset($variables['InnoDB']) && $variables['InnoDB'] != 'NO');
}



У меня была одна и та же проблема, и единственным способом ее работы было изменение строки 59 файла app / code / core / Mage / Install / Model / Installer / Db / Mysql4.php :

public function supportEngine()
{
    $variables  = $this->_getConnection()
        ->fetchPairs('SHOW VARIABLES');
    return (!isset($variables['have_innodb']) || $variables['have_innodb'] != 'YES') ? false : true;
}

С:

public function supportEngine()
    {
        $variables  = $this->_getConnection()
            ->fetchPairs('SHOW ENGINES');
        return (isset($variables['InnoDB']) && $variables['InnoDB'] != 'YES');
    }

И я не нашел его нигде, поэтому, если вы боретесь, я гарантирую, что это решит его.




Related

php mysql magento innodb