magento中的资源设置问题

时间:2011-06-21 18:12:55

标签: magento

提前为冗长的帖子道歉。

我正在关注Alan Storm关于magento开发的文章。我正在关注该系列关于资源设置的第6部分。我在配置文件中创建了资源设置,并正确放置了Setup.php文件。但是,如果我尝试刷新缓存或尝试访问magento的任何页面,我收到一条错误消息:处理您的请求时出错。如果我从配置文件中删除设置部分,一切都会再次完美。这是我的文件: Config.xml文件

<config>    
    <modules>
        <Foostor_Weblog>
            <version>0.1.0</version>
        </Foostor_Weblog>
    </modules>
    <frontend>
        <routers>
            <weblog>
                <use>standard</use>
                <args>
                    <module>Foostor_Weblog</module>
                    <frontName>weblog</frontName>
                </args>
            </weblog>
        </routers>
    </frontend> 
    <global>
        <models>
        <weblog>
            <class>Foostor_Weblog_Model</class>
            <!-- 
            need to create our own resource, cant just
            use core_mysql4
            -->
            <resourceModel>weblog_mysql4</resourceModel>
        </weblog> 
        <weblog_mysql4>
            <class>Foostor_Weblog_Model_Mysql4</class>
            <entities>
                <blogpost>
                    <table>blog_posts</table>
                </blogpost>
            </entities>
        </weblog_mysql4>
    </models>
    <resources>
        <weblog_setup>
            <setup>
                <module>Foostor_Weblog</module>
                <class>Foostor_Weblog_Model_Resource_Setup</class>
            </setup>
            <connection>
                <use>core_setup</use>
            </connection>
        </weblog_setup>
        <weblog_write>
            <connection>
                <use>core_write</use>
            </connection>
        </weblog_write>
        <weblog_read>
            <connection>
                <use>core_read</use>
            </connection>
        </weblog_read>      
    </resources>
    </global>
</config>

这是Setup.php文件:     

同样在var / reports文件夹的报告中,我发现了以下错误消息:

a:5:{i:0;s:102:"SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'weblog_setup' for key 'PRIMARY'";i:1;s:1493:"#0 C:\wamp\www\magento\lib\Zend\Db\Statement.php(300): Zend_Db_Statement_Pdo->_execute(Array)
#1 C:\wamp\www\magento\lib\Zend\Db\Adapter\Abstract.php(479): Zend_Db_Statement->execute(Array)
#2 C:\wamp\www\magento\lib\Zend\Db\Adapter\Pdo\Abstract.php(238): Zend_Db_Adapter_Abstract->query('INSERT INTO `co...', Array)
#3 C:\wamp\www\magento\lib\Varien\Db\Adapter\Pdo\Mysql.php(337): Zend_Db_Adapter_Pdo_Abstract->query('INSERT INTO `co...', Array)
#4 C:\wamp\www\magento\lib\Zend\Db\Adapter\Abstract.php(574): Varien_Db_Adapter_Pdo_Mysql->query('INSERT INTO `co...', Array)
#5 C:\wamp\www\magento\app\code\core\Mage\Core\Model\Mysql4\Resource.php(96): Zend_Db_Adapter_Abstract->insert('core_resource', Array)
#6 C:\wamp\www\magento\app\code\core\Mage\Core\Model\Resource\Setup.php(290): Mage_Core_Model_Mysql4_Resource->setDbVersion('weblog_setup', '0.1.0')
#7 C:\wamp\www\magento\app\code\core\Mage\Core\Model\Resource\Setup.php(233): Mage_Core_Model_Resource_Setup->_upgradeResourceDb('0', '0.1.0')
#8 C:\wamp\www\magento\app\code\core\Mage\Core\Model\Resource\Setup.php(161): Mage_Core_Model_Resource_Setup->applyUpdates()
#9 C:\wamp\www\magento\app\code\core\Mage\Core\Model\App.php(399): Mage_Core_Model_Resource_Setup::applyAllUpdates()
#10 C:\wamp\www\magento\app\code\core\Mage\Core\Model\App.php(329): Mage_Core_Model_App->_initModules()
#11 C:\wamp\www\magento\app\Mage.php(627): Mage_Core_Model_App->run(Array)
#12 C:\wamp\www\magento\index.php(80): Mage::run('', 'store')
#13 {main}";s:3:"url";s:48:"/magento/index.php/weblog/index/showAllBlogPosts";s:11:"script_name";s:18:"/magento/index.php";s:4:"skin";s:7:"default";}

我在一些帖子中发现,可以通过清除magento db中的Log_ *表的内容来避免完整性约束违规。但我不确定这是否是我需要做的。好心劝告。感谢。

2 个答案:

答案 0 :(得分:2)

您似乎已在weblog_setup表中拥有core_resource密钥,因为它是唯一密钥,因此无法复制。尝试从表中删除该行,并确保您的设置脚本正确运行并且不会产生错误。

答案 1 :(得分:0)

我有类似的问题。原因是我的安装脚本中使用了变量$file。因此它与$file中的变量Mage_Core_Model_Resource_Setup::_modifyResourceDb发生了冲突。

我不知道是否是相同的情况,但永远不会将安装脚本中的变量命名为$file$fileName$version < / p>