Magento install complains about missing InnoDB when it is available

前端 未结 7 602
遇见更好的自我
遇见更好的自我 2020-12-07 12:44

During installation, Magento produces the following error:

Database server does not support the InnoDB storage engine.

I\'ve fix

相关标签:
7条回答
  • 2020-12-07 13:09

    Or don't do a core-hack! You should override the Installer-Model softly before Installation:

    Paste this in your 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>
    

    And following in 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');
        }
    }
    

    And enable the extension. The advantage is, that the old validation is still correct, if the mysql-version is older.

    0 讨论(0)
  • 2020-12-07 13:15

    ver 1.9.1.0 downloader.php

    Putting this up for anyone thats using the downloader.php currently bundled in the 1.9.1.0 installer.

    If you're happy that your MySQL Database does support InnoDB (It's the DEFAULT) in later versions. You can safely edit the file to remove the check and all the download to take place.

        /**
         * 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;
        }
    
    0 讨论(0)
  • 2020-12-07 13:15

    Bug was fixed in Magento CE 1.8, so just use the lines above for CE \leq 1.7

    0 讨论(0)
  • 2020-12-07 13:19

    Line 59 of the file app/code/core/Mage/Install/Model/Installer/Db/Mysql4.php

    Replace:

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

    with this:

    public function supportEngine()
    {
        $variables  = $this->_getConnection()
            ->fetchPairs('SHOW ENGINES');
        return (isset($variables['InnoDB']) && $variables['InnoDB'] != 'NO');
    }
    
    0 讨论(0)
  • 2020-12-07 13:21

    I was having the same issue and the only way it worked was when I changed Line 59 of the file app/code/core/Mage/Install/Model/Installer/Db/Mysql4.php from:

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

    With:

    public function supportEngine()
        {
            $variables  = $this->_getConnection()
                ->fetchPairs('SHOW ENGINES');
            return (isset($variables['InnoDB']) && $variables['InnoDB'] != 'YES');
        }
    

    And I didn't find it anywhere so if you are struggling I guarantee this will solve it.

    0 讨论(0)
  • 2020-12-07 13:31
    public function supportEngine()
    {
        $variables  = $this->_getConnection()->fetchPairs('SHOW ENGINES');
        return (isset($variables['InnoDB']) && $variables['InnoDB'] != 'NO');
    }
    
    0 讨论(0)
提交回复
热议问题