programing

Magento 설치는 InnoDB가 없을 때 InnoDB를 사용할 수 없다고 불평합니다.

topblog 2023. 8. 21. 19:24
반응형

Magento 설치는 InnoDB가 없을 때 InnoDB를 사용할 수 없다고 불평합니다.

설치하는 동안 Magento에서 다음 오류가 발생합니다.

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

저는 마젠토에 대한 모든 종속성을 수정했고, SHOW ENGINES를 사용하여 명령줄에서 MySQL로 두 번 확인했으며, InnoDB를 사용할 수 있습니다(기본 스토리지 엔진도 있음).

이것은 다른 사람들이 설치할 때 볼 수 있는 MySQL 구성에 대한 액세스 문제가 아닙니다.

참고: 이는 Mac Pro(내가 개발 중인 도메인 이름에 대한 간단한 호스트 DNS 다시 쓰기)에서 실행됩니다.

파일의 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-version이 이전 버전인 경우 이전 검증이 여전히 정확하다는 것입니다.

ver 1.9.1.0 downloader.dll

이것을 사용하는 모든 사람을 위해 게시하는 것.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;
    }

버그는 마젠토 CE 1.8에서 수정되었으므로 CE \leq 1.7에 대해 위의 라인을 사용하십시오.

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

저도 같은 문제를 겪고 있었는데, 이 문제가 작동하는 유일한 방법은 다음에서 app/code/core/Mage/Installer/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['InnoDB']) && $variables['InnoDB'] != 'YES');
    }

그리고 저는 어디에서도 그것을 찾지 못했기 때문에 당신이 어려움을 겪고 있다면 이것으로 해결될 것이라고 장담합니다.

파일 app/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;
}

언급URL : https://stackoverflow.com/questions/15443448/magento-install-complains-about-missing-innodb-when-it-is-available

반응형