[php] Magento 설치시 InnoDB가 없을 때 누락되었다고 불평합니다



2 Answers

아니면 코어 해킹을하지 마십시오! 설치하기 전에 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 다음을 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 버전이 오래된 경우 이전 유효성 검사가 여전히 올바른 것입니다.

Question

설치하는 동안 Magento는 다음 오류를 생성합니다.

데이터베이스 서버는 InnoDB 스토리지 엔진을 지원하지 않습니다.

나는 Magento에 대한 모든 의존성을 수정했고, SHOW ENGINES를 사용하여 명령 행에서 MySQL을 두 번 확인했으며, InnoDB를 사용할 수있게했다. (기본 저장소 엔진이기도하다.)

다른 사람들이 설치시 보았을 수도있는 MySQL 구성에 대한 액세스에 관한 문제는 아닙니다.

참고 :이 프로그램은 Mac Pro에서 실행됩니다 (개발중인 도메인 이름에 대한 간단한 호스트 DNS 재 작성 사용).




파일 / applet / code / core / Mage / Install / Model / Installer / Db / Mysql4.php의 59 행

바꾸다:

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



Magento CE 1.8에서 버그가 수정되었으므로 위의 줄을 CE \ leq 1.7에 사용하십시오.




Related