1

$installer->createEntityTables( $this->getTable('red/red') ); を含めると、このエラーが発生します。

私はエンタープライズ 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}
4

1 に答える 1

1

これは、発生してはならないときにエラーが発生するという問題です。簡単に言えば、MySQL は DDL トランザクションをサポートしておらず、メソッドの過程で DDL ルーチンが SQL で検出され、エラーがスローされます。

簡単な答えは、次の行をコメントアウトすることです:


lib/Varien/Db/Adapter/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 を Magento MySQL API に変換する必要があります (コア SQL セットアップ スクリプトで見られるように)。後者は大きな苦痛です..より良いアイデアは、メソッドを拡張することです.

背景情報とトラブルシューティングの詳細については、こちらをご覧ください。

于 2012-09-23T02:14:40.943 に答える