2012-01-24 45 views
2

我正嘗試使用自定義模塊創建自定義表。我一直在關注Alan Storm's article創建一個自定義表Magento安裝腳本永遠不會運行

這是我的文件夾結構

CM 
Tablecreation 
etc >> config.xml (has 1.6.0.0 as the version mentioned) 
Helper >> Data.php 
controllers >> IndexController.php 
Model 
    Actualtable.php 
    Mysql4 
    Actualtable.php 
    Resource 
    Mysql4 
    Setup.php 
    sql 
    tablecreation_setup 
    install-1.6.0.0.php 

這是我的config.xml文件。

<?xml version="1.0" encoding="UTF-8"?> 
    <config> 
    <modules> 
    <CM_Tablecreation> 
     <version>1.6.0.0</version> 
    </CM_Tablecreation> 
</modules> 
<frontend> 
    <routers> 
     <tablecreation> 
      <use>standard</use> 
      <args> 
       <module>CM_Tablecreation</module> 
       <frontName>tablecreation</frontName> 
      </args> 
     </tablecreation> 
    </routers> 
</frontend>  
<global> 

    <models> 
     <tablecreation> 
      <class>CM_Tablecreation_Model</class> 
      <resourceModel>tablecreation_mysql4</resourceModel> 
     </tablecreation> 
     <tablecreation_mysql4> 
     <class>CM_Tablecreation_Model_Mysql4</class>  
     <entities> 
      <actualtable> 
       <table>actual_table</table> 
      </actualtable> 
     </entities>      
    </tablecreation_mysql4> 
    </models> 

    <resources> 
    <tablecreation_setup> 
    <setup> 
     <module>CM_Tablecreation</module> 
     <class>CM_Tablecreation_Model_Resource_Mysql4_Setup</class> 
    </setup> 
    <connection> 
     <use>core_setup</use> 
    </connection> 
    </tablecreation_setup> 
    <tablecreation_write> 
     <connection> 
      <use>core_write</use> 
     </connection> 
    </tablecreation_write> 
    <tablecreation_read> 
     <connection> 
      <use>core_read</use> 
     </connection> 
    </tablecreation_read>  
</resources>  

    <helpers> 
      <tablecreation> 
       <class>CM_Tablecreation_Helper</class> 
      </tablecreation> 
    </helpers> 
</global> 
</config> 

這是我得到的每一個

a:5:{i:0;s:69:"/home/dev/public_html/app/code///sql/tablecreation_setup not found";i:1;s:818:"#0 /home/dev/public_html/app/code/core/Mage/Core/Model/Resource/Setup.php(421): Mage_Core_Model_Resource_Setup->_modifyResourceDb('install', '', '1.6.0.0') 

我通過把嘗試捕捉與應用程序/代碼/核心/法師/核心/資源/ Setup.php作爲異常消息試過調試時間錯誤在這個主題的一些以前的類似問題中提出,但沒有成功

我的模塊甚至沒有列入core_resource表中。即使一些事情如此,表格肯定也不會被創建。

我也有這種情況時,它確實在core_resource表中列出,但如果我從表中刪除我的模塊的記錄(再次運行安裝腳本),然後嘗試刷新我的網站的任何頁面,我再次得到錯誤頁面打開我發現同樣的錯誤的報告。

基本上,我在網上的任何文章,我都被卡在這個相同的錯誤。請幫我解釋一下這個錯誤以及導致它的原因。如果有人能夠提出解決問題的方法,那麼也許也是如此。

許多在此先感謝。

+2

將您的config.xml粘貼到這裏 –

回答

2

我可以看到一對夫婦的問題與您發佈的內容:

  1. 你的安裝腳本需要調用mysql4安裝-1.6.0.0.php。如果Magento由於命名錯誤而無法找到安裝腳本,它將無法運行它,所以我會將install-1.6.0.0.php重命名爲mysql4-install-1.6.0.0.php。

  2. 你需要一個資源標籤在你的config.xml文件中的全局部分看起來像這樣:

    <resources> 
        <tablecreation_setup> 
         <setup> 
          <module>CM_Tablecreation</module> 
         </setup> 
         <connection> 
          <use>core_setup</use> 
         </connection> 
        </tablecreation_setup> 
    </resources> 
    
  3. 檢查您的應用程序的/ etc/modules.CM_Tablecreation.xml文件。您發佈的錯誤消息很有趣,因爲代碼池和模塊名稱在試圖找到安裝文件的路徑中丟失。檢查你的xml文件是否有一個config> modules> YourModule_NameHere> codePool標籤(注意codePool的大寫字母P),它包含字符串「core」,「community」或「local」,具體取決於模塊所在的位置。

您可以在my previous answer to a similar question找到一些幫助和Alan Storm's definitive answer關於這個問題的。

PS:您的擴展版本不需要與Magento本身的版本號相同。從任何版本號開始,都可以讓你快樂,並根據需要增加。

+0

感謝您的回覆。我把它命名爲mysql4-install-0.0.1,但是因爲即使這樣也沒有幫助我試過1.6.0.0。但無論如何,我已將它重新命名爲mysql4-install-1.6.0.0。php和我的''標籤或多或少都是相同的,除了我已經刪除的''這個東西。我現在可以在core_resource表中看到我的模塊,但仍看不到任何實際的表。這也是以前發生的事情。我已經嘗試了Alan Storm的調試技術,但它不會給我帶來任何錯誤/異常。那麼我如何獲得實際的表格? – ivn

+0

好的,我再次嘗試了Alan Storm的調試技巧。我從'core_resource'表中刪除了我的模塊條目,修改了我的核心Setup.php以拋出這些異常,並嘗試重新加載頁面並獲得錯誤報告。打開它,我又發現了同樣的錯誤,正如我在問題中提到的那樣。所以我不知道爲什麼現在拋出一個錯誤。但是,如果我插入記錄,我再也沒有錯誤,也沒有表格。 – ivn

+0

core_resource中的記錄表示安裝腳本已成功運行。雖然它在那裏Magento不會再嘗試再次運行您的安裝腳本,因爲它認爲它已經成功完成了。 –