php - software - requerimientos de magento 2
La instalación de Magento se queja de la falta de InnoDB cuando está disponible (7)
Durante la instalación, Magento produce el siguiente error:
El servidor de base de datos no es compatible con el motor de almacenamiento InnoDB.
He arreglado todas las dependencias para Magento, y comprobé doblemente con MySQL en la línea de comandos usando SHOW ENGINES y definitivamente tengo InnoDB disponible (también el motor de almacenamiento predeterminado).
Este no es un problema sobre el acceso a la configuración de MySQL que otros podrían haber visto en su instalación.
Nota: Esto se ejecuta en un Mac Pro (con una reescritura DNS de hosts simple para el nombre de dominio que estoy desarrollando).
ver 1.9.1.0 downloader.php
Poniendo esto para cualquier persona que esté utilizando el downloader.php
actualmente incluido en el instalador 1.9.1.0
.
Si está contento de que su base de datos MySQL sea compatible con InnoDB (es el valor predeterminado) en versiones posteriores. Puede editar el archivo de forma segura para eliminar el cheque y realizar toda la descarga.
/**
* 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;
}
El error se corrigió en Magento CE 1.8, así que solo use las líneas de arriba para CE / leq 1.7
Estaba teniendo el mismo problema y la única forma en que funcionó fue cuando cambié la línea 59 de la aplicación de archivo / code / core / Mage / Install / Model / Installer / Db / Mysql4.php desde:
public function supportEngine()
{
$variables = $this->_getConnection()
->fetchPairs(''SHOW VARIABLES'');
return (!isset($variables[''have_innodb'']) || $variables[''have_innodb''] != ''YES'') ? false : true;
}
Con:
public function supportEngine()
{
$variables = $this->_getConnection()
->fetchPairs(''SHOW ENGINES'');
return (isset($variables[''InnoDB'']) && $variables[''InnoDB''] != ''YES'');
}
Y no lo encontré en ningún lado, así que si estás luchando, te garantizo que esto lo resolverá.
Línea 59 de la app/code/core/Mage/Install/Model/Installer/Db/Mysql4.php
archivo app/code/core/Mage/Install/Model/Installer/Db/Mysql4.php
Reemplazar:
public function supportEngine()
{
$variables = $this->_getConnection()
->fetchPairs(''SHOW VARIABLES'');
return (!isset($variables[''have_innodb'']) || $variables[''have_innodb''] != ''YES'') ? false : true;
}
con este:
public function supportEngine()
{
$variables = $this->_getConnection()
->fetchPairs(''SHOW ENGINES'');
return (isset($variables[''InnoDB'']) && $variables[''InnoDB''] != ''NO'');
}
Línea 59 de la aplicación de archivo / code / core / Mage / Install / Model / Installer / Db / Mysql4.php
Reemplazar:
public function supportEngine()
{
$variables = $this->_getConnection()
->fetchPairs(''SHOW VARIABLES'');
return (!isset($variables[''have_innodb'']) || $variables[''have_innodb''] != ''YES'') ? false : true;
}
con este:
public function supportEngine()
{
/*
$variables = $this->_getConnection()
->fetchPairs(''SHOW ENGINES'');
return (!isset($variables[''have_innodb'']) || $variables[''have_innodb''] != ''YES'') ? false : true;
*/
return 1;
}
O no hagas un core-hack! Debe anular el Installer-Model suavemente antes de la instalación:
Pegue esto en su 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>
Y siguiendo en la 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'');
}
}
Y habilite la extensión. La ventaja es que la validación anterior sigue siendo correcta, si la versión de mysql es anterior.
public function supportEngine()
{
$variables = $this->_getConnection()->fetchPairs(''SHOW ENGINES'');
return (isset($variables[''InnoDB'']) && $variables[''InnoDB''] != ''NO'');
}