gpt4 book ai didi

Magento 订单保存错误 : Integrity constraint violation

转载 作者:行者123 更新时间:2023-12-05 00:00:42 27 4
gpt4 key购买 nike

在 Magento 中使用信用卡/借记卡下订单时出现以下错误:

Order saving error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '282-189' for key 2

我无法获得确切的跟踪信息,因为它只是不想向我展示这一点,但是,我已将其追溯到 app/code/core/Mage/Checkout/controllers/OnepageController.php。在线 501 (未经编辑)。确切的行是:
$this->getOnepage()->saveOrder();

现在,逻辑告诉我,在尝试添加订单时,这只是两个具有相同键的订单,还是我完全错了?

无论如何,除此之外,解决此问题的最佳方法是什么?我曾想过导出订单,将它们全部删除,然后重新导入它们,但我觉得这行不通。

我正在使用 Magento 1.6.2.0

编辑:我刚刚意识到,如果我发现哪个表未通过完整性检查,我可能会清空该表(取决于它是哪个表),这会自行修复吗?关于如何找出哪个表搞砸的任何想法?

EDIT2:所以在OğuzÇelikdemir的回答之后,事实证明以下是罪魁祸首:
2012-03-14T13:59:01+00:00 DEBUG (7): SQL: INSERT INTO `sales_order_tax_item` (`tax_id`, `item_id`, `tax_percent`) VALUES (?, ?, ?) (254, 8, 10)
2012-03-14T13:59:01+00:00 DEBUG (7): SQL: INSERT INTO `sales_order_tax_item` (`tax_id`, `item_id`, `tax_percent`) VALUES (?, ?, ?) (254, 8, 10)

显然不能插入两个相同的tax_id。任何人都知道如何解决它?

最佳答案

截断以下 log表。为了保护自己,请从 CONSOLE 进行备份,而不是在 Magento 中。

TRUNCATE `log_customer`;
ALTER TABLE `log_customer` AUTO_INCREMENT=1;
TRUNCATE `log_quote`;
ALTER TABLE `log_quote` AUTO_INCREMENT=1;
TRUNCATE `log_summary`;
ALTER TABLE `log_summary` AUTO_INCREMENT=1;
TRUNCATE `log_visitor_info`;
ALTER TABLE `log_visitor_info` AUTO_INCREMENT=1;
TRUNCATE `log_url`;
ALTER TABLE `log_url` AUTO_INCREMENT=1;
TRUNCATE `log_url_info`;
ALTER TABLE `log_url_info` AUTO_INCREMENT=1;
TRUNCATE `log_visitor`;
ALTER TABLE `log_visitor` AUTO_INCREMENT=1;
TRUNCATE `report_event`;
ALTER TABLE `report_event` AUTO_INCREMENT=1;
TRUNCATE `log_summary_type`;
ALTER TABLE `log_summary_type` AUTO_INCREMENT=1;

编辑:
对于 SQL 调试,打开 /lib/Varien/Db/Adapter/Pdo/Mysql.php文件并找到 protected $_debug .默认状态应为 false ,改为 true .

之后,日志文件应该在 var/debug/sql.txt 中可用。

另外,拿这个 stackoverflow ansver How do I print all the queries in Magento?

编辑 2:
因此,这是您处理销售商品税的文件。 app/code/core/Mage/Tax/Model/Observer/Observer.php
# Line 144 ( Magento 1.6 edition )
Mage::getModel('tax/sales_order_tax_item')->setData($data)->save();

正在调用 sales_order_tax_item模型。
app/core/Mage/Tax/Model/Resource/Sales/Order/Tax/Itemp.php
# Line 51
public function getTaxItemsByItemId($item_id)
{
$adapter = $this->_getReadAdapter();
$select = $adapter->select()
->from(array('item' => $this->getTable('tax/sales_order_tax_item')), array('tax_id', 'tax_percent'))
->join(
array('tax' => $this->getTable('tax/sales_order_tax')),
'item.tax_id = tax.tax_id',
array('title', 'percent', 'base_amount')
)
->where('item_id = ?', $item_id);

return $adapter->fetchAll($select);
}

这是从观察者调用的函数。那么,您现在可以做什么,只需在 Observer 或 Function 上添加断点并查看调试器输出。为什么要调用这个函数两次!

关于Magento 订单保存错误 : Integrity constraint violation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9687964/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com