2012-01-24 47 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不会再尝试再次运行您的安装脚本,因为它认为它已经成功完成了。 –