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


Answers

Или не делайте основной взлом! Перед установкой следует мягко переопределить Installer-Model:

Вставьте это в свое app/code/local/Company/InstallBugfix/etc/config.xml :

<?xml version="1.0"?>
<config>
    <modules>
        <Company_InstallBugfix>
            <version>0.1.0</version>
        </Company_InstallBugfix>
    </modules>
    <global>
        <models>
            <installbugfix>
                <class>Company_InstallBugfix_Model</class>
            </installbugfix>
            <install>
                <rewrite>
                    <installer_db_mysql4>Company_InstallBugfix_Model_Installer_Db_Mysql4</installer_db_mysql4>
                </rewrite>
            </install>
        </models>
    </global>
</config>

И следующее в app/code/local/Company/InstallBugfix/Model/Installer/Db/Mysql4.php :

<?php
class Company_InstallBugfix_Model_Installer_Db_Mysql4 extends Mage_Install_Model_Installer_Db_Mysql4
{
    /**
     * Check InnoDB support
     *
     * @return bool
     */
    public function supportEngine()
    {
        $supportsEngine = parent::supportEngine();
        if ($supportsEngine) {
            return true;
        }
        $variables = $this
                     ->_getConnection()
                     ->fetchPairs('SHOW ENGINES');
        return (isset($variables['InnoDB']) && $variables['InnoDB'] != 'NO');
    }
}

И включите расширение. Преимущество состоит в том, что старая проверка правильна, если mysql-версия старше.

Question

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

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

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

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

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




Строка 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['have_innodb']) || $variables['have_innodb'] != 'YES') ? false : true; 
*/
    return 1;
}



Ошибка была исправлена ​​в Magento CE 1.8, поэтому просто используйте приведенные выше строки для CE \ leq 1.7




Related