2012-08-24 7 views
1

$ installer-> createEntityTables ($ this-> getTable ('red/red'));를 포함하면이 오류가 발생합니다.createEntityTables를 사용할 때 오류가 발생했습니다.

나는 엔터프라이즈 1.11을 사용하고있다. 나는 또한 정말로 시간이 많이 걸리는 모든 것을 입력하는 대안을 보았다. 누군가이 기능을 작동하게 할 사람을 알려주시겠습니까?

[previous:Exception:private] => 
    [xdebug_message] => (!) Mage_Eav_Exception: Can't create table: red_faqs_eavexample in C:\wamp\www\ubt.onlocal.com.au\app\Mage.php on line 549 
Call Stack 
#TimeMemoryFunctionLocation 
10.0003690528{main}()..\index.php:0 
20.00271167384Mage::run()..\index.php:81 
30.01012776112Mage_Core_Model_App->run()..\Mage.php:640 
40.02304545784Mage_Core_Model_App->_initModules()..\App.php:338 
50.46364871080Mage_Core_Model_Resource_Setup::applyAllUpdates()..\App.php:412 
60.528411772936Mage_Core_Model_Resource_Setup->applyUpdates()..\Setup.php:235 
70.528611769664Mage_Core_Model_Resource_Setup->_installResourceDb()..\Setup.php:327 
80.528611769824Mage_Core_Model_Resource_Setup->_modifyResourceDb()..\Setup.php:421 
90.529511778144include('C:\wamp\www\ubt.onlocal.com.au\app\code\local\Magelocal\Red\sql\red_setup\install-0.1.0.php')..\Setup.php:624 
100.529711778712Mage_Eav_Model_Entity_Setup->createEntityTables()..\install-0.1.0.php:6 

) 
Error in file: "C:\wamp\www\ubt.onlocal.com.au\app\code\local\Magelocal\Red\sql\red_setup\install-0.1.0.php" - Can't create table: red_faqs_eavexample 

#0 C:\wamp\www\ubt.onlocal.com.au\app\code\core\Mage\Core\Model\Resource\Setup.php(645): Mage::exception('Mage_Core', 'Error in file: ...') 
#1 C:\wamp\www\ubt.onlocal.com.au\app\code\core\Mage\Core\Model\Resource\Setup.php(421): Mage_Core_Model_Resource_Setup->_modifyResourceDb('install', '', '0.1.0') 
#2 C:\wamp\www\ubt.onlocal.com.au\app\code\core\Mage\Core\Model\Resource\Setup.php(327): Mage_Core_Model_Resource_Setup->_installResourceDb('0.1.0') 
#3 C:\wamp\www\ubt.onlocal.com.au\app\code\core\Mage\Core\Model\Resource\Setup.php(235): Mage_Core_Model_Resource_Setup->applyUpdates() 
#4 C:\wamp\www\ubt.onlocal.com.au\app\code\core\Mage\Core\Model\App.php(412): Mage_Core_Model_Resource_Setup::applyAllUpdates() 
#5 C:\wamp\www\ubt.onlocal.com.au\app\code\core\Mage\Core\Model\App.php(338): Mage_Core_Model_App->_initModules() 
#6 C:\wamp\www\ubt.onlocal.com.au\app\Mage.php(640): Mage_Core_Model_App->run(Array) 
#7 C:\wamp\www\ubt.onlocal.com.au\index.php(81): Mage::run('', 'store') 
#8 {main} 

답변

1

이것은 발생하면 안되는 오류가 발생하는 문제입니다. 간단히 말해 MySQL은 DDL 트랜잭션을 지원하지 않으며, DDL 루틴이 SQL에서 발견되고 오류가 발생합니다. 그래서 설치 모듈을 수 있습니다


lib 디렉토리/Varien/DB를/어댑터/PDO/Mysql.php

protected function _checkDdlTransaction($sql) 
{ 
    if (is_string($sql) && $this->getTransactionLevel() > 0) { 
     $startSql = strtolower(substr(ltrim($sql), 0, 3)); 
     if (in_array($startSql, $this->_ddlRoutines)) { 
      // comment this out: trigger_error(Varien_Db_Adapter_Interface::ERROR_DDL_MESSAGE, E_USER_ERROR); 
     } 
    } 
} 

일 :

쉬운 대답은이 라인을 주석 처리하는 것입니다 . 분명히 핵심 파일을 해킹하는 것은 끔찍한 생각입니다. 핵심 SQL 설정 스크립트에서 볼 수 있듯이 메소드를 확장하거나 SQL을 실행 한 다음 생성 된 SQL을 Magento MySQL API로 변환해야합니다. 후자는 큰 고통입니다. 더 좋은 아이디어는 방법을 확장하는 것입니다.

배경 정보 및 문제 해결

관련 문제