2012-01-01 42 views
1

我試圖使用Magento的EAV結構創建一個自定義模塊,並一直在使用本教程作爲指南:http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-7-advanced-orm-entity-attribute-valueMagento的自定義模塊與EAV - 未創建文本表

一切似乎除了我的安裝腳本工作總是試圖創建_text表失敗。它會創建第一個3 - entityname_datetime,entityname_int和entityname_decimal,然後引發異常:無法從核心資源設置模型創建table:entityname_text。

我試過更改表名,但它在同一時間失敗。除了更改模型和實體名稱外,我的代碼完全反映了教程中的代碼。

調試的任何提示?在覈心資源設置模型中使用Mage :: log似乎沒有用,儘管我無法理解爲什麼。

+0

張貼代碼的安裝腳本。日誌必須在管理>系統>配置>開發者 – 2012-01-01 14:41:17

回答

2

這是最近引入到產品的Community Edition版本的錯誤。已通過their public-with-a-login bug tracker向核心團隊報告。現在我會跳過創建非varchar文本類型並繼續按照教程中的方式工作。 (不理想,但作爲教程建議,你會它是一個從無到有EAV模型調用一個罕見的用例)

+0

中激活只需注意我使用的是企業版本 - 因此這裏也存在錯誤。不幸的是,我實際上需要從頭開始創建一個EAV模型,所以我只能不停地通過它。 – harimau 2012-01-04 02:26:44

1

更改表名稱後你試着從你的模塊的core_resource表中刪除條目並清除緩存?順便說一句,你用什麼名字?

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