我最近更新了我的开发网站上的客户和订单信息,然后将其推送到现场(不更新increment_last_id)。我们的结账不再处理信用卡订单,当我检查异常日志时,我得到了这两个相关的错误:
exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '100000001' for key 'UNQ_SALES_FLAT_INVOICE_INCREMENT_ID'' in /home/tebostorefixture/public_html/lib/Zend/Db/Statement/Pdo.php:228
Next exception 'Zend_Db_Statement_Exception' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '100000001' for key 'UNQ_SALES_FLAT_INVOICE_INCREMENT_ID', query was: INSERT INTO `sales_flat_invoice` (`store_id`, `base_grand_total`, `shipping_tax_amount`, `tax_amount`, `base_tax_amount`, `store_to_order_rate`, `base_shipping_tax_amount`, `base_discount_amount`, `base_to_order_rate`, `grand_total`, `shipping_amount`, `subtotal_incl_tax`, `base_subtotal_incl_tax`, `store_to_base_rate`, `base_shipping_amount`, `total_qty`, `base_to_global_rate`, `subtotal`, `base_subtotal`, `discount_amount`, `billing_address_id`, `order_id`, `state`, `shipping_address_id`, `store_currency_code`, `transaction_id`, `order_currency_code`, `base_currency_code`, `global_currency_code`, `increment_id`, `created_at`, `updated_at`, `hidden_tax_amount`, `base_hidden_tax_amount`, `shipping_hidden_tax_amount`, `discount_description`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, '2016-12-12 18:48:11', '2016-12-12 18:48:11', ?, ?, ?, ?)' in /home/mystore/public_html/lib/Zend/Db/Statement/Pdo.php:235
起初,错误一直在尝试复制100000027左右的条目,并且每次尝试订单时都会上升。所以我进入eav_entity_store并将increment_last_id更改为比我们上一个订单(100000117)高1。
我重新编制了索引并清除了缓存。但是现在我得到了同样的错误,除了它试图复制100000001。无论我尝试多少次,它都不断尝试复制第一个订单号。我回去检查并且我们尝试的每个事务都正确地增加了increment_last_id,但重复100000001的错误仍在继续。
答案 0 :(得分:0)
使用以下代码解决错误:
TRUNCATE dataflow_batch_export ;
TRUNCATE dataflow_batch_import ;
TRUNCATE log_customer ;
TRUNCATE log_quote ;
TRUNCATE log_summary ;
TRUNCATE log_summary_type ;
TRUNCATE log_url ;
TRUNCATE log_url_info ;
TRUNCATE log_visitor ;
TRUNCATE log_visitor_info ;
TRUNCATE log_visitor_online ;
TRUNCATE report_event ;
或
您可以尝试以下。
在app / code / core / Mage / Sales / Model / Resource / Quote.php
中搜索isOrderIncrementIdUsed方法
在那种方法中,
替换
$bind = array(':increment_id' => (int)$orderIncrementId);
与
$bind = array(':increment_id' => $orderIncrementId);
希望,这两种解决方案中的一种可以解决您的问题。
随时请求任何其他帮助!
答案 1 :(得分:0)
解决了问题。
出于某种原因,我在eav_entity_store中缺少3行。其中一行是发票,是必要的。
我无法从旧数据库成功导出/导入行,因此我复制了他们的数字并手动创建了具有相应数字的表。