刚将我的网站升级到1.9.3.0版本,出现了错误 SQLSTATE[42S22]:列未找到:1054 Unknown column 'catalog_product_entity_group_price.is_percent'。

18

我之前使用的是Magento 1.9.2.4,今天收到通知需要将我的Magento升级到最新版本并进行一些重要更新。

在从下载器部分升级我的网站后,一切顺利,没有错误等问题。但是我注意到两件事情:我注意到我的index.php权限已更改为666,网站可以正确地打开,也就是首页显示正常。但是当我点击任何产品时,会显示以下信息的错误页面:

处理您的请求时出现错误。

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'catalog_product_entity_group_price.is_percent' in 'field list', query was: SELECT `catalog_product_entity_group_price`.`value_id` AS `price_id`, `catalog_product_entity_group_price`.`website_id`, `catalog_product_entity_group_price`.`all_groups`, `catalog_product_entity_group_price`.`customer_group_id` AS `cust_group`, `catalog_product_entity_group_price`.`value` AS `price`, `catalog_product_entity_group_price`.`is_percent` FROM `catalog_product_entity_group_price` WHERE (entity_id='84') AND (website_id = 0)

Trace:
    #0 /home/MyWebsite/public_html/app/Mage.php(463): Mage_Core_Model_Config->getModelInstance('eav/entity_attr...', 'SQLSTATE[42S22]...')

   #1 /home/MyWebsite/public_html/app/code/core/Mage/Eav/Model/Entity/Abstract.php(661): Mage::getModel('eav/entity_attr...', 'SQLSTATE[42S22]...')
   #2 /home/MyWebsite/public_html/app/code/core/Mage/Eav/Model/Entity/Abstract.php(1641): Mage_Eav_Model_Entity_Abstract->walkAttributes('backend/afterLo...', Arr

由于没有像他们说的那样备份,我不知道如何回滚,或者无法解决此错误。

提前致谢。

6个回答

35

删除 var/cache/ 中的内容

未来更新前请注意关闭编译器、所有索引和缓存。

发生的情况是配置缓存仍然活动,从而阻止 Magento 检测到需要进行数据库更改。


1
我也有同样的问题。删除缓存并不能解决它。 - user3478148
如果您的Magento安装配置为使用文件系统进行缓存,则应该解决此问题。否则,您需要清除您设置的任何其他缓存。一旦缓存被清除,Magento将收集更新安装的新配置文件,检测数据库版本不匹配并触发迁移。 - Ext3h

17
该问题是由于表 catalog_product_entity_group_price 中缺少一个名为 is_percent 的列所致。
Magento 1.9.3 包含一个升级文件,可在数据库中创建该列。该文件位于此处:app/code/core/Mage/Catalog/sql/catalog_setup/upgrade-1.6.0.0.19.1.4-1.6.0.0.19.1.5.php 当启用缓存时,安装程序无法运行升级脚本,导致 OP 报告的错误。升级脚本失败的另一个可能原因是在上传所有文件之前刷新前端或后端。
如果清空缓存无法解决问题(确保刷新 Redis 等外部缓存),则可以尝试以下操作:
1) 打开 core_resource
2) 定位 catalog_setup
3) 如果 versiondata_versions 的当前值为:1.6.0.0.19.1.5,则将两个值都更改为 1.6.0.0.19.1.2 并刷新任何前端页面。
这将强制 Magento 重新运行升级脚本并在数据库中创建缺少的列。
如果 version 和 data_version 的值为 1.6.0.0.19.1.2,则未正确清空缓存。

谢谢你的回答,但我的问题是以不同的方式解决了。我只是粘贴了所有旧文件和文件夹,我找到了10天前的文件备份,我只是粘贴了旧的文件,我的错误消失了,而且每个地方都显示我已经更新了magneto版本,即1.9.3.0。 是的,这不是一个适当的解决方案,但对我来说它起作用了。 - Naveed
我在通过CLI进行更新时意外删除了基本的Magento文件,因此我进行了手动更新。上述步骤对我没有解决问题,但是在CLI中使用“chmod 777 var”更改www/var文件夹的权限后,一切都恢复正常了。 - Dennis van Schaik
救了我的晚上。非常感谢! - TonkBerlin
谢谢,帮了我很多。 - Pedro Vasconcelos
太棒了。仍然帮助我们这些复制粘贴者。丹尼尔万岁! - ItsJhonny

3

从文件夹路径“var/cache/”中删除所有文件/文件夹。

在开始升级之前,请确保禁用缓存。


2

对我来说,问题在于Redis缓存。如果您不确定是否启用了Redis,请检查您的app/etc/local.xml文件。

清除Redis缓存:

redis-cli flushall 

那对我有用。

0

今天我也遇到了同样的问题,我通过以下步骤解决了它:

  1. 在数据库中运行以下查询

    ALTER TABLE sales_bestsellers_aggregated_yearly ADD product_type_id TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER product_id ;

    ALTER TABLE catalog_product_entity_group_price ADD is_percent SMALLINT( 5 ) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Is Percent';

  2. 删除 var/cache/ 目录下的内容


0

确保表格已经存在。

检查该表(sales_bestsellers_aggregated_yearly),确定其中是否包含“product_type_id”列。如果该表包含“product_type_id”列,则重新索引并刷新缓存。如果该表不包含“product_type_id”列,则需要按照所附图像创建结构。

Database view sales_bestsellers_aggregated_yearly


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接