我迁移了一个mgento安装,执行以下操作:
现在我得到:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '363624' for key 'PRIMARY'
我在数据库中搜索了此密钥363624,但它没有重复,因为消息显示
我该如何解决这个问题?
答案 0 :(得分:29)
这帮助了我(清除了一些表格):
输入您的Magento数据库并运行以下sql查询:
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 ;
答案 1 :(得分:8)
它不是重复的,而是必须尝试来复制它。
您是如何导出数据库的?我会检查转储的SQL文件是否在顶部有“ SET FOREIGN_KEY_CHECKS = 0; ”或类似的行。
如果没有,我会删除数据库并将此行添加到文件的顶部:
SET FOREIGN_KEY_CHECKS = 0;
......这一行到底:
SET FOREIGN_KEY_CHECKS = 1;
...然后再试一次。
答案 2 :(得分:6)
我遇到了同样的错误。
对我来说,事实证明,出口花费了很长时间,网站保持“现场”状态,导致出口结束与开头不同步。
具体来说,'log_visitor_info'表比其他一些相关的访问者日志表有大约100个记录,因此数据库正在尝试从此处已存在的另一个表创建记录ID。
我刚从这个特定的表中删除了最后100条左右的记录,但事情再次发生,没有错误。 或者,看起来你可以在f5键上进行混搭,直到你超过已经存在的ID并且Magento将再次开始工作。
我怀疑在导出之前将商店置于维护模式可能有助于解决此特定错误。
答案 3 :(得分:0)
在我的情况下,问题是在文本编辑器中没有BOM编码的UTF-8。我已经使用BOM更改为UTF-8,一切正常。
答案 4 :(得分:0)
如果显示表'cataloginventory_stock_item' having 'UNQ_CATALOGINVENTORY_STOCK_ITEM_PRODUCT_ID_STOCK_ID' index,
的错误
然后请确保您从脚本中传递不同的产品SKU。
答案 5 :(得分:0)
在您的magento数据库中运行此sql查询。
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 ;
首先,你必须检查' log_visitor_info'表结构。在此表格中,“visitor_id' field的默认值应为null。如果默认值设置为任何你应该运行以下查询,否则你留下以下查询只需执行上述查询。
ALTER TABLE `log_visitor_info` CHANGE `visitor_id` `visitor_id` BIGINT(20) UNSIGNED NOT NULL COMMENT 'Visitor ID';
答案 6 :(得分:0)
此问题是因为表log_visitor_info
包含log_visitor
表中不存在的额外访问者行,如@creuzerm的注释所述;
如果运行这些查询,则必须具有相同的结果
SELECT MAX(`visitor_id`) FROM `log_visitor`;
SELECT MAX(`visitor_id`) FROM `log_visitor_info`;
要解决此问题,您需要使用以下查询删除这些多余的无效行
DELETE FROM `log_visitor_info` WHERE `visitor_id` > ( SELECT MAX(`visitor_id`) FROM `log_visitor` );
为了保持一致性,也可以运行
DELETE FROM `log_visitor_online` WHERE `visitor_id` > ( SELECT MAX(`visitor_id`) FROM `log_visitor` );