Lors de l'installation, Magento génère l'erreur suivante:
Le serveur de base de données ne prend pas en charge le moteur de stockage InnoDB.
J'ai corrigé toutes les dépendances pour Magento et vérifié deux fois avec MySQL sur la ligne de commande en utilisant SHOW ENGINES et j'ai définitivement InnoDB disponible (également le moteur de stockage par défaut).
Ce n’est pas un problème d’accès à la configuration MySQL que d’autres auraient pu voir lors de leur installation.
Remarque: Il s’agit d’un Mac Pro (avec une réécriture DNS des hôtes simples pour le nom de domaine pour lequel je développe).
Ligne 59 du fichier app/code/core/Mage/Install/Model/Installer/Db/Mysql4.php
Remplacer:
public function supportEngine()
{
$variables = $this->_getConnection()
->fetchPairs('SHOW VARIABLES');
return (!isset($variables['have_innodb']) || $variables['have_innodb'] != 'YES') ? false : true;
}
avec ça:
public function supportEngine()
{
$variables = $this->_getConnection()
->fetchPairs('SHOW ENGINES');
return (isset($variables['InnoDB']) && $variables['InnoDB'] != 'NO');
}
Ou ne faites pas de piratage de base! Vous devez remplacer le modèle d’installateur avant l’installation:
Collez ceci dans votre 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>
Et après 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');
}
}
Et activer l'extension. L'avantage est que l'ancienne validation est toujours correcte si la version de mysql est plus ancienne.
Mettre ceci en place pour quiconque utilisant le downloader.php
actuellement fourni dans le programme d'installation 1.9.1.0
.
Si vous êtes heureux que votre base de données MySQL prenne en charge InnoDB (c'est le DEFAULT) dans les versions ultérieures. Vous pouvez éditer le fichier en toute sécurité pour supprimer la vérification et pour que tout le téléchargement ait lieu.
/**
* 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;
}
Un bogue a été corrigé dans Magento CE 1.8, utilisez donc simplement les lignes ci-dessus pour CE\leq 1.7