Intereting Posts

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

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

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

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

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

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

Solutions Collecting From Web of "Установка Magento жалуется на отсутствие InnoDB, когда он доступен"

Строка 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'); } 

Или не делайте основной взлом! Перед установкой следует мягко переопределить 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-версия старше.

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; } 

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

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

У меня была одна и та же проблема, и единственным способом ее работы было изменение строки 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'); } 

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