【问题标题】:Magento - Unable to reindex Product Prices - Foreign Key Constraint FailsMagento - 无法重新索引产品价格 - 外键约束失败
【发布时间】:2013-08-31 09:57:11
【问题描述】:
我最近刚刚将我的 magento 商店从 1.4.2 升级到 1.7.0.2..升级很顺利,但是当我在升级后尝试重新索引数据时..它在产品价格上失败了..
我尝试使用来自 SSH 的 php shell/indexer.php --reindexall,但它在产品价格上失败并出现这些错误(我使用 pastebin,因为错误很长):
http://pastebin.com/iV2tuzDX
据我所知,catalog_product_index_tier_price 表是空的。我不确定这是否会导致任何问题?
我尝试了许多不同的方法来解决它,但都无济于事。像这样的事情:
他们都没有工作.. 我不是 MySQL 专家,但我知道一点.. 所以我希望有人能够找出导致错误的原因并帮助我,我相信它也可能有所帮助其他和我遇到同样问题的人:)
谢谢!~
【问题讨论】:
标签:
php
mysql
magento
foreign-keys
reindex
【解决方案1】:
解决方案:
请执行以下操作:
通过以下方式启用 magento DB 日志记录:
lib/Varien/Db/Adapter/Pdo/Mysql.php 。在第 86 行附近,您将看到以下类变量:
protected $_debug = false;
protected $_logAllQueries = false;
protected $_logCallStack = false;
protected $_debugFile = ‘var/debug/sql.txt’;
将 all 更改为 true,然后运行重新索引。然后检查上面指定的日志文件。
日志文件指出数据库中的哪个表导致了问题,然后将这个表的表结构与这里的同一个表结构进行比较:http://www.magereverse.com/index/magento-database-diagram/version/1-7-0-2
删除不应该存在的列。
该问题将得到解决。
问候。
【讨论】:
-
嗨@sweet72,感谢您提出的解决方案。我完全按照你提到的那样做。我一生都不太了解那个sql.txt的内容。所以我'已将内容粘贴到此处的 pastebin 中:[link]pastebin.com/ddSv3tVs 你能帮忙看看我应该在哪个表中检查“额外”列吗?因为我尝试检查catalog_product_index_tier_price 和catalog_product_entity 并且它们似乎有正确的列.. 感谢所有帮助! :)
【解决方案2】:
我遇到了同样的问题,日志是这样说的
exception ‘PDOException’ with message ‘SQLSTATE[21S01]: Insert value list does not match column list ...
当我追踪异常和导致错误的查询时,我发现升级没有正确完成,数据库中缺少与产品索引组价格相关的某些列。
我不得不再次添加它们(通过再次运行与产品属性组价格相关的设置文件),它就像一个魅力。