Пользовательский модуль Magento с EAV - не создает текстовую таблицу - PullRequest
1 голос
/ 01 января 2012

Я пытаюсь создать пользовательский модуль, используя структуру EAV Magento, и использовал это руководство в качестве руководства: http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-7-advanced-orm-entity-attribute-value

Кажется, все работает, за исключением того, что мой скрипт установки всегда терпит неудачу при попытке создать таблицу _text. Он создает первые 3 - entityname_datetime, entityname_int и entityname_decimal, а затем выдает исключение: Невозможно создать table: entityname_text из модели настройки основного ресурса.

Я пытался изменить имя таблицы, но она не удалась в тот же момент. За исключением изменения названий моделей и сущностей, мой код точно отражает это из учебника.

Какие-нибудь советы по отладке? Использование Mage :: log в модели настройки основного ресурса, похоже, не работает, хотя я не могу понять, почему.

Ответы [ 3 ]

2 голосов
/ 02 января 2012

Это ошибка, недавно появившаяся в версии продукта Community Edition.Об этом сообщили основной команде через их общедоступный баг-трекер .Сейчас я бы пропустил создание типов текста, не относящихся к varchar, и продолжил бы ваш путь по учебнику.(не идеально, но, как подсказывает учебник, вы будете использовать этот редкий вариант использования, который требует "чистой" модели EAV)

1 голос
/ 01 января 2012

после изменения имени таблицы вы пытались удалить запись из таблицы core_resource вашего модуля и очистить кеш?Кстати, какое имя вы используете?

0 голосов
/ 23 декабря 2012

решение Magento Team ссылка на отчет об ошибке ссылка

class Namespace_Modulename_Model_Resource_Setup extends Mage_Eav_Model_Entity_Setup
{
    public function createEntityTables($baseTableName, array $options = array())
    {
        ...

        /**
         * DDL operations cannot be executed within transaction so these lines are useless
         */
        //$connection->beginTransaction();
        try { 
            foreach ($tables as $tableName => $table) {
                $connection->createTable($table);
            }
            $connection->commit();
       } catch (Exception $e) {
           //$connection->rollBack();
           throw Mage::exception('Mage_Eav', Mage::helper('eav')->__('Can\'t create table: %s', $tableName));
       }
    }
}
...