带EAV的Magento自定义模块 - 无法创建文本表

时间:2012-01-01 09:14:33

标签: magento entity-attribute-value

我正在尝试使用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似乎没有用,虽然我无法理解为什么。

3 个答案:

答案 0 :(得分:2)

这是最近引入该产品的Community Edition版本的错误。它已通过their public-with-a-login bug tracker向核心团队报告。现在我将跳过创建非varchar文本类型并继续学习本教程。 (不太理想,但正如教程所暗示的那样,你会发现这是一个罕见的用例,需要一个刮擦EAV模型)

答案 1 :(得分:1)

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

答案 2 :(得分:0)

Magento团队的解决方案 bug report reference link

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