Magento模块sql脚本运行多次?

时间:2011-06-19 04:20:26

标签: magento module

当我的Magento模块试图自行安装时,我试图找出我收到此错误的原因:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'export_sent' for key 'PRIMARY'

我认为该模块由于某种原因试图多次安装自己,因为每次运行时,都会在sales_order_status表中插入一个值。第一条指令运行,然后似乎代码不断重复。不确定发生了什么。任何帮助都非常感谢!顺便说一句,我在运行此安装之前删除了表中的值export_sent。

我的模块的config.xml:     

<config>
    <modules>
        <Millena_Export>
            <version>0.1.0</version>
        </Millena_Export>
    </modules>
    <global>
        <models>
            <millena_export>
                <class>Millena_Export_Model</class>
            </millena_export>
        </models>
        <helpers>
            <export>
                <class>Millena_Export_Helper</class>
            </export>
        </helpers>
        <resources>
            <export_setup>
                <setup>
                    <module>Millena_Export</module>
                </setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </export_setup>
            <export_write>
                <connection>
                    <use>core_write</use>
                </connection>
            </export_write>
            <export_read>
                <connection>
                    <use>core_read</use>
                </connection>
            </export_read>
        </resources>
    </global>

    <crontab>
        <jobs>
            <millena_export_send_all>
                <schedule><cron_expr>* * * * *</cron_expr></schedule>
                <run><model>millena_export/observer::exportOrderData</model></run>
            </millena_export_send_all>
        </jobs>
    </crontab>
</config>

和我的sql / export_setup / mysql4-install-0.1.0.php:

$installer = $this;
$installer->startSetup();
$installer->run("
    INSERT INTO  `{$this->getTable('sales/order_status')}` (
        `status` ,
        `label`
    ) VALUES (
        'export_sent',  'Exported to Mainframe'
    );
    INSERT INTO  `{$this->getTable('sales/order_status_state')}' (
        `status` ,
        `state` ,
        `is_default`
    ) VALUES (
        'export_sent',  'processing',  '0'
    );

    INSERT INTO  `{$this->getTable('sales/order_status')}` (
        `status` ,
        `label`
    ) VALUES (
        'export_acknowledged',  'Acknowledged by Mainframe'
    );
    INSERT INTO  `{$this->getTable('sales/order_status_state')}' (
        `status` ,
        `state` ,
        `is_default`
    ) VALUES (
        'export_acknowledged',  'processing',  '0'
    );
");
$installer->endSetup();

2 个答案:

答案 0 :(得分:0)

你说你从表中删除了export_sent(单数),但实际上在你的设置脚本中它被插入两次,在2个表中:你是否在两个表中删除了它?
无论如何,为了更好地理解这个问题,我建议你应用these instructions,你会看到整个错误。它涉及编辑app / Mage.php,因此下次升级安装时将覆盖更改 HTH

答案 1 :(得分:0)

有一个sql错误,我在该脚本的两行使用了单引号而不是后退。