当我的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();
答案 0 :(得分:0)
你说你从表中删除了export_sent(单数),但实际上在你的设置脚本中它被插入两次,在2个表中:你是否在两个表中删除了它?
无论如何,为了更好地理解这个问题,我建议你应用these instructions,你会看到整个错误。它涉及编辑app / Mage.php,因此下次升级安装时将覆盖更改
HTH
答案 1 :(得分:0)
有一个sql错误,我在该脚本的两行使用了单引号而不是后退。