Magento自定义模块与EAV -创建文本表失败



我正在尝试使用Magento的EAV结构创建一个自定义模块,并一直使用本教程作为指南: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似乎不起作用,尽管我不明白为什么。

这是最近在该产品的Community Edition版本中引入的错误。这个问题已经通过bug追踪器报告给了核心团队。现在,我将跳过创建非varchar文本类型,并继续学习本教程。(不理想,但正如教程所建议的,这是一个罕见的用例,需要一个scratch EAV模型)

更改表名后,您是否尝试从模块的core_resource表中删除条目并清除缓存?顺便问一下,你用的是什么名字?

解决方案Magento Team bug报告参考链接

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

最新更新