2

似乎更新magento真的很难:)

我有 magento 1.4.1.1,我想将它更新到最新的 magento 1.4.2。

我遵循本指南: 如何将 magento 1.4 1.1 升级到 1.7.0.2

我当然会做什么: - 禁用和清除缓存 - 清除会话 - 更新前禁用所有扩展 - 备份备份备份:D

当我从 1.4.1.1 更新到 1.4.2 时,我触发主页以进行 mysql 更改。这是问题开始的地方。

我收到此错误:

a:5:{i:0;s:435:"Error in file: "/var/www/vhosts/dev/docs/app/code/core/Mage/Sales/sql/sales_setup/mysql4-upgrade-1.4.0.20-1.4.0.21.php" - SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`dev`.<result 2 when explaining filename '#sql-20eb_3d66'>, CONSTRAINT `FK_PRODUCT_ORDERED_AGGREGATED_MONTHLY_PRODUCT_ID` FOREIGN KEY (`product_id`) REFERENCES `catalog_product_entity` (`entit)";i:1;s:974:"#0 /var/www/vhosts/dev/docs/app/code/core/Mage/Core/Model/Resource/Setup.php(390): Mage::exception('Mage_Core', 'Error in file: ...')

我还尝试直接升级到 1.7,这会导致许多其他类似的错误。我当然可以注释掉所有导致问题的部分,但我认为这不明智:)

你知道我能做些什么来避免/修复这些错误吗?

非常感谢 :)

问候

4

3 回答 3

2

是的,升级 Magento 几乎从来都不是一帆风顺的。

要诊断此特定问题,您必须比较类型sales_bestsellers_aggregated_monthlyproduct_idcatalog_product_entityentity_id字段。

您可以在我专门针对此主题的文章中找到有关导致此问题的原因以及解决方案的更多详细信息。

In Chinese:第 3 方扩展如何破坏您的 Magento 升级

Auf Deutsch: Wie Externe Extensions Dein Magento-Upgrade Ruinieren Können

于 2012-12-02T21:40:34.787 回答
0

我有类似的问题:

app\code\core\Mage\Sales\sql\sales_setup\mysql4-upgrade-1.4.0.20-1.4.0.21.php" - SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails ..

但我的情况是,此键出现错误:

FK_PRODUCT_ORDERED_AGGREGATED_DAILY_PRODUCT_ID

解决方案非常简单,我只是从表中删除条目:
sales_bestsellers_aggregated_daily
sales_bestsellers_aggregated_monthly
sales_bestsellers_aggregated_yearly
其中product_id 与catalog_product_entity 表中的entity_id 不对应。

此查询可帮助您检测无用的 product_id:

SELECT product_id FROM sales_bestsellers_aggregated_yearly where product_id not in  
(select entity_id from catalog_product_entity)
于 2014-07-12T18:43:01.533 回答
0

如果您已经对数据库进行了备份并且可以重新启动该过程,我建议您采用另一种方式,但在这里您必须迁移到 1.5 而不是 1.6 而不是 1.7:

首先,您必须从托管服务提供商处获得 SSH 访问权限,并通过 SSH 协议连接到您的服务器。然后,

1 – 将 lib/pear 文件夹的权限更改为可写(递归):chmod -R 777 lib/PEAR

2 – 执行此命令准备 Magento 进行升级:./pear mage-setup

执行命令后您很可能会看到以下结果: 频道“connect.magentocommerce.com/core”已初始化 从 Magento 1.4.1.x 升级到 Magento 1.4.2.0 即使您将 Magento 商店升级到 1.5,此步骤也是必要的或 1.6 版本。

3 – 执行 Magento 升级命令:./pear upgrade -f magento-core/Mage_All_Latest-stable 命令的输出将显示升级了哪些核心包:升级正常:channel://connect.magentocommerce.com/core/Interface_Adminhtml_Default- 1.4.2.0

4 – 这部分升级完成后,输入以下命令:chmod 550 ./mage ./mage mage-setup 。命令执行后会看到这样的结果: 成功添加:connect20.magentocommerce.com/community 表示Magento connect 2.0 频道已成功添加到频道列表中。

5 – 接下来,输入这个命令:./mage sync 这里你应该看到:: ... 成功添加:community/Mage_Locale_en_US-1.4.2.0

添加成功:community/Interface_Install_Default-1.4.2.0

成功添加:community/Phoenix_Moneybookers-1.2.3

成功添加:community/Mage_Downloader-1.5.0.0

添加成功:community/Lib_Google_Checkout-1.4.2.0

升级到 Magento 1.4.2.0 已完成,现在您可以继续升级到 Magento 1.5.1.0 或 1.6.0.0。在继续进行 Magento 升级的这一部分之前,查看 Magento 升级脚本将升级您的商店的版本非常重要。输入这个命令来检查这个:./mage list-upgrades 如果你会看到这个结果:

社区更新:

Mage_All_Latest:1.4.2.1 => 1.6.0.0

Lib_Js_Mage:1.4.2.0 => 1.6.0.0

Lib_Varien:1.4.2.0 => 1.6.0.0

Lib_Phpseclib:1.4.2.0 => 1.5.0.0

这意味着您的 Magento 将升级到 1.6.0.0 版本。如果这不是您需要的,您可以将升级通道更改为“稳定”并将您的 Magento 升级到版本 1.5.1.0。

6 – 输入此命令将升级通道更改为稳定:./mage config-set preferred_state stable 在此之后,“./mage list-upgrades”命令将显示以下结果:社区更新:

Mage_All_Latest:1.4.2.1 => 1.5.1.0.1

Lib_Js_Mage:1.4.2.0 => 1.5.1.0

Lib_Varien:1.4.2.0 => 1.5.1.0

Lib_Phpseclib:1.4.2.0 => 1.5.0.0

Mage_Core_Adminhtml:1.4.2.0 => 1.5.1.0

Mage_Core_Modules:1.4.2.0 => 1.5.1.0

7 – 选择频道后,您可以使用以下命令将 Magento 升级到 1.5.1.0(或 Magento 1.6.0.0):./mage upgrade-all –force

您将在屏幕上看到升级的软件包:

… 升级包:community/Mage_Locale_en_US 1.6.0.0

升级包:community/Lib_Mage 1.6.0.0

升级包:community/Lib_ZF 1.11.1.0

升级包:community/Lib_Js_Prototype 1.7.0.0.1

升级包:community/Lib_ZF_Locale 1.11.1.0

现在升级完成了。如果一切都正确升级,您将在浏览器中看到升级的商店。在管理面板中,您可以检查商店的版本。

如果您已经安装了全新的 Magento 版本,并且您不会进行手动数据传输,因为这需要几天甚至几周的时间。您可以做些什么来将数据库直接从 1.4 移动到新的 Magento 1.7,您可以使用自动化服务。

于 2012-12-28T12:43:37.693 回答