我正在尝试使用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));
}
}
}