Instalação do Magento com MySQL 5.6.1+

A partir da versão 5.6.1 do MySQL, a variável have_innodb foi descontinuada (+info), o único problema é que o Magento usava esta variável para validar as configurações de banco de dados. Por este motivo, ao realizar uma nova instalação, o Magento acabava sempre exibindo a mensagem de erro:
Database server does not support the InnoDB storage engine.

Existem 2 alternativas para esta questão, uma delas é comentar a função supportEngine e a outra é fazer com que seja verificada de outra maneira se o servidor de banco de dados MySQL, possui ou não, o suporte a engine InnoDB ativo.

A partir da versão 1.6.0.0 do Magento, abra o seguinte arquivo:
app/code/core/Mage/Install/Model/Installer/Db/Mysql4.php

Próximo a linha 59, procure pela função supportEngine e substitua isto:

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

Por isto:

public function supportEngine()
{
    $engine  = $this->_getConnection()
        ->fetchOne('SELECT Support FROM INFORMATION_SCHEMA.ENGINES WHERE Engine LIKE "innodb"');
  return (!isset($engine) || ($engine != 'DEFAULT' && $engine != 'YES')) ? false : true;
}

Também disponibilizei um zip contendo o arquivo modificado, basta descompactar no diretório raiz de instalação do Magento: Clique aqui para fazer o download do ZIP contendo a correção

Para versões do Magento abaixo da 1.6.0.0, o procedimento é um pouco diferente. Abra o seguinte arquivo:
app/code/core/Mage/Install/Model/Installer/Db.php

Procure pelo seguinte trecho de código (deverá estar próximo a linha 76):

// check InnoDB support
if (!isset($variables['have_innodb']) || $variables['have_innodb'] != 'YES') {
    Mage::throwException(Mage::helper('install')->__('Database server does not support the InnoDB storage engine.'));
}

E substitua pelo seguinte:

$engine = $connection->fetchOne('SELECT Support FROM INFORMATION_SCHEMA.ENGINES WHERE Engine LIKE "innodb"');
// check InnoDB support
if (!isset($engine) || ($engine != 'DEFAULT' && $engine != 'YES')) {
    Mage::throwException(Mage::helper('install')->__('Database server does not support the InnoDB storage engine.'));
}

 


Publicado

em

, , ,

por