web-dev-qa-db-ja.com

Magentoのインストールでは、InnoDBが利用可能になったときに行方不明になります

インストール中に、Magentoは次のエラーを生成します。

データベースサーバーはInnoDBストレージエンジンをサポートしていません。

Magentoのすべての依存関係を修正し、SHOW ENGINESを使用してコマンドラインでMySQLをダブルチェックし、InnoDB(デフォルトのストレージエンジン)を確実に使用できるようにしました。

これは、他のユーザーがインストールで見たMySQL構成へのアクセスに関する問題ではありません。

注:これはMac Proで実行されています(私が開発しているドメイン名の単純なホストDNS書き換えを使用)。

41
Giles Williams

ファイルの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');
}
132

または、コアハックをしないでください!インストールの前に、インストーラーモデルをソフトにオーバーライドする必要があります。

これを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-versionが古い場合、古い検証がまだ正しいことです。

20
Rokko_11

ver 1.9.1.0 downloader.php

downloader.phpインストーラーに現在バンドルされている1.9.1.0を使用しているすべての人にこれを提供します。

MySQLデータベースが後のバージョンでInnoDB(デフォルト)をサポートしていることに満足している場合。ファイルを安全に編集して、チェックとすべてのダウンロードを削除できます。

    /**
     * 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;
    }
5
Luke

バグはMagento CE 1.8で修正されたため、CEの上記の行を使用してください\ leq 1.7

0
Rokko_11