Magento升级需要太长时间,永远不会完成

时间:2012-10-31 17:48:44

标签: php magento

我正在将magento从1.4.0.1升级到1.7.0.2。最初有一些错误;修复后,现在升级运行了5个小时,但从未完成。没有显示错误。知道为什么会这样吗?

5 个答案:

答案 0 :(得分:9)

我最近将客户端magento从V1.4升级到V1.7.2.0,我按照以下步骤操作: - 以下是将网站从Magento v1.4.0.0升级到v1.7.2.0的要点: -

  1. 以压缩格式收集实时数据库备份,不包含以下表格: -

    • “log_customer”
    • “log_quote”
    • “log_summary”
    • “log_url”
    • “log_url_info”
    • “log_visitor”
    • “log_visitor_info”

    “log_visitor_online”

  2. 将压缩后的备份数据库解压缩到您自己的文件系统中的任何文件夹中。

  3. 启动本地WAMP / XAMPP,并使用网络应用程序“phpMyAdmin”创建测试数据库“test_something”或任何其他名称。

  4. 打开命令提示符窗口,然后键入“mysql”以启动MySQL命令提示符。

  5. 使用命令提示符将解压缩的数据库导入测试数据库,这样可以更快地完成任何错误。

  6. 成功导入后,运行phpMyAdmin文件“DB Changes.txt”中提到的SQL。

  7. 在本地WAMP / XAMPP中提取新的Magento v1.7.2.0,并使用带有旧的livesite数据的测试数据库开始安装此Magento。

  8. 成功安装Magento后,导出&使用命令提示符以压缩格式转储新升级的数据库,这样可以更快地完成任何错误。

  9. 提取新的压缩Magento或将新的解压缩的Magento v1.7.2.0上传到实时服务器的文件系统,无需安装任何内容。

  10. 将此压缩数据库上传到实时服务器的文件系统,然后打开实时服务器的PuTTY。

  11. 上传本地WAMP / XAMPP的“app / etc / local.xml”Magento文件的副本,以替换现场Magento的“app / etc / local.xml”文件。在将其上传到实时服务器之前,请记住更改此文件的所有数据库凭据(根据新的实时服务器)。

  12. 请记住,不要在网络浏览器中浏览实时网络服务器的Magento,直到第14点完成。

  13. 使用PuTTY命令,解压缩压缩数据库,然后将其导入实时网站的新数据库。

  14. 成功导入后,搜索“core_config_data”数据库表,其中“path”列值为“%base_url%”。将“value”列的所有值替换为实时站点“http://www.livesite.com/”的完整URL,而不提及“index.php”。

  15. 将主题及其相关文件上传到新服务器的文件系统。

  16. 上传扩展程序/模块检查兼容性。

  17. 确保在“系统配置”中配置所需的模块,这些模块来自“管理”面板。

    DB Changes.txt如下: - CREATE TABLE IF NOT NOT EXISTS log_customer(   log_id int(10)unsigned NOT NULL AUTO_INCREMENT,   visitor_id bigint(20)unsigned DEFAULT NULL,   customer_id int(11)NOT NULL DEFAULT' 0',   login_at datetime NOT NULL DEFAULT' 0000-00-00 00:00:00',   logout_at datetime DEFAULT NULL,   store_id smallint(5)unsigned NOT NULL,   PRIMARY KEY(log_id),   KEY IDX_VISITORvisitor_id) )ENGINE = InnoDB DEFAULT CHARSET = utf8 COMMENT ='客户登录信息';


    -

    - 表log_quote

    的表结构

    CREATE TABLE IF NOT NOT EXISTS log_quote(   quote_id int(10)unsigned NOT NULL DEFAULT' 0',   visitor_id bigint(20)unsigned DEFAULT NULL,   created_at datetime NOT NULL DEFAULT' 0000-00-00 00:00:00',   deleted_at datetime DEFAULT NULL,   主要关键(quote_id) )ENGINE = InnoDB DEFAULT CHARSET = utf8 COMMENT ='引用日志数据';


    -

    - 表log_summary

    的表结构

    CREATE TABLE IF NOT NOT EXISTS log_summary(   summary_id bigint(20)unsigned NOT NULL AUTO_INCREMENT,   store_id smallint(5)unsigned NOT NULL,   type_id smallint(5)unsigned DEFAULT NULL,   visitor_count int(11)NOT NULL DEFAULT' 0',   customer_count int(11)NOT NULL DEFAULT' 0',   add_date datetime NOT NULL DEFAULT' 0000-00-00 00:00:00',   主要关键(summary_id) )ENGINE = InnoDB DEFAULT CHARSET = utf8 COMMENT ='摘要日志信息';


    -

    - 表log_url

    的表结构

    CREATE TABLE IF NOT NOT EXISTS log_url(   url_id bigint(20)unsigned NOT NULL DEFAULT' 0',   visitor_id bigint(20)unsigned DEFAULT NULL,   visit_time datetime NOT NULL DEFAULT' 0000-00-00 00:00:00',   PRIMARY KEY(url_id),   KEY IDX_VISITORvisitor_id) )ENGINE = InnoDB DEFAULT CHARSET = utf8 COMMENT =' URL访问历史记录';


    -

    - 表log_url_info

    的表结构

    CREATE TABLE IF NOT NOT EXISTS log_url_info(   url_id bigint(20)unsigned NOT NULL AUTO_INCREMENT,   url varchar(255)NOT NULL DEFAULT'',   referer varchar(255)DEFAULT NULL,   主要关键(url_id) )ENGINE = InnoDB DEFAULT CHARSET = utf8 COMMENT ='关于网址访问的详细信息';


    -

    - 表log_visitor

    的表结构

    CREATE TABLE IF NOT NOT EXISTS log_visitor(   visitor_id bigint(20)unsigned NOT NULL AUTO_INCREMENT,   session_id char(64)NOT NULL DEFAULT'',   first_visit_at datetime DEFAULT NULL,   last_visit_at datetime NOT NULL DEFAULT' 0000-00-00 00:00:00',   last_url_id bigint(20)unsigned NOT NULL DEFAULT' 0',   store_id smallint(5)unsigned NOT NULL,   主要关键(visitor_id) )ENGINE = InnoDB DEFAULT CHARSET = utf8 COMMENT ='系统访问者记录';


    -

    - 表log_visitor_info

    的表结构

    CREATE TABLE IF NOT NOT EXISTS log_visitor_info(   visitor_id bigint(20)unsigned NOT NULL DEFAULT' 0',   http_referer varchar(255)DEFAULT NULL,   http_user_agent varchar(255)DEFAULT NULL,   http_accept_charset varchar(255)DEFAULT NULL,   http_accept_language varchar(255)DEFAULT NULL,   server_addr bigint(20)DEFAULT NULL,   remote_addr bigint(20)DEFAULT NULL,   主要关键(visitor_id) )ENGINE = InnoDB DEFAULT CHARSET = utf8评论='访客提供的其他信息';


    -

    - 表log_visitor_online

    的表结构

    CREATE TABLE IF NOT NOT EXISTS log_visitor_online(   visitor_id bigint(20)unsigned NOT NULL AUTO_INCREMENT,   visitor_type char(1)NOT NULL,   remote_addr bigint(20)NOT NULL,   first_visit_at datetime DEFAULT NULL,   last_visit_at datetime DEFAULT NULL,   customer_id int(10)unsigned DEFAULT NULL,   last_url varchar(255)DEFAULT NULL,   PRIMARY KEY(visitor_id),   KEY IDX_VISITOR_TYPEvisitor_type),   KEY IDX_VISIT_TIMEfirst_visit_atlast_visit_at),   KEY IDX_CUSTOMERcustomer_id) )ENGINE = InnoDB DEFAULT CHARSET = utf8;

    TRUNCATE report_event;

    TRUNCATE report_viewed_product_index;

    TRUNCATE report_compared_product_index;

    TRUNCATE dataflow_batch_export;

    ALTER TABLE orders CHANGE url parent_id VARCHAR(255)CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL;

答案 1 :(得分:5)

I通过更改 lib \ Varien \ Db \ Adapter \ Pdo \ Mysql.php 文件中的以下行来查询日志

protected $_debug               = true;
protected $_logAllQueries       = true;
protected $_debugFile           = 'var/debug/pdo_mysql.log';

然后通过分析 pdo_myql.log 文件,我发现一个查询正在执行时出错,因此magento安装程序一次又一次地运行它。

错误是。

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry ''11199-1' for key 'UNQ_INCREMENT_ID'

所以我删除了数据库表中的条目,并在 pdo_mysql.log 中删除了其他查询,并且升级完成。

在magento升级上工作了很多天,我总结了成功将magento从1.4.0.1升级到1.7.0.2的步骤。显示的这些错误对于其他项目会有所不同,因为每个项目都有不同的数据。

  1. 为新版本创建新数据库。 (我在用 SQLyog ,因为它适用于大型数据库导入和导出。)

  2. www htdocs 中提取并安装新版本1.7.0.1。 我的项目名称是 magento171

  3. 创建新数据库,因为我们需要修复步骤中的新数据库

  4. 旧数据库数据导入新数据库

  5. 在新安装的magento版本中更改 etc / local.xml 中的新数据库名称。

  6. etc / local.xml 中找到并将 SET NAMES utf8 更改为 SET NAMES utf8; SET FOREIGN_KEY_CHECKS = 0; SET UNIQUE_CHECKS = 0;

  7. 在新版本的magento中复制旧项目文件。我有主题 空白文件夹。如果您具有默认的模板文件,请复制默认值 文件夹中。

    •app \ design \ frontend \ default \ blank

    •app \ code \ local

    •skin \ frontend \ default / blank

    •app \ etc \ modules(复制不在新版本中的文件)。

  8. 在MySql查询日志记录中,通过更改以下行 lib \ Varien \ Db \ Adapter \ Pdo \ Mysql.php

     protected $_debug               = true;
     protected $_logAllQueries       = true;
     protected $_debugFile           = 'var/debug/pdo_mysql.log';
    
  9. 搜索和更改 CREATE TABLE CREATE TABLE IF NOT NOT EXISTS 在code / core / mage /.

  10. 更改表 core_config_data 中的以下条目(使用您的  项目文件夹名称)。

      • web/unsecure/base_url | http://localhost/magento171/
      • web/secure/base_url   | http://localhost/magento171/
    
  11. /errors/local.xml.sample 重命名为 /errors/local.xml 以启用error_reporting。

  12. 通过删除 var \ cache 中的所有数据来清除magento缓存。

  13. 转到浏览器并键入项目路径。   http:// localhost / magento171 / 并密切关注浏览器和 var / debug / pdo_mysql.log 文件。

  14. 我遇到的第一个错误是:文件错误:  “d:\ XAMPP \ htdocs中\ magento171 \应用\代码\核心\法师\ SALES \ SQL \ sales_setup \ mysql4升级-1.3.99-1.4.0.0.php”

    • SQLSTATE [23000]:完整性约束违规:1062密钥'PRIMARY'重复输入'7'

    修复:我从 pdo_mysql.log 文件中发现问题出在 sales_flat_order 表中,这意味着主键有很多重复的条目,所以我截断了所有的销售表。这实际上是我旧DB中的错误。在新版本中,increment_id是UNIQUE。我们无法跳过主键检查,因此我截断了与销售相关的所有表。如果您遇到相同的问题,则截断与该功能相关的所有表,如果在客户中重复,则截断所有客户表,或者如果在目录中,则截断目录表。但请记住truncate应该在发生错误时完成,因为如果在安装开始之前被截断,安装程序将无法读取现有数据,最后您将错过一些记录,例如遗漏某些订单或发票。

    SET FOREIGN_KEY_CHECKS = 0;
    TRUNCATE `sales_flat_creditmemo`;
    TRUNCATE `sales_flat_creditmemo_comment`;
    TRUNCATE `sales_flat_creditmemo_grid`;
    TRUNCATE `sales_flat_creditmemo_item`;
    TRUNCATE `sales_flat_invoice`;
    TRUNCATE `sales_flat_invoice_comment`;
    TRUNCATE `sales_flat_invoice_grid`;
    TRUNCATE `sales_flat_invoice_item`;
    TRUNCATE `sales_flat_order`;
    TRUNCATE `sales_flat_order_address`;
    TRUNCATE `sales_flat_order_grid`;
    TRUNCATE `sales_flat_order_item`;
    TRUNCATE `sales_flat_order_payment`;
    TRUNCATE `sales_flat_order_status_history`;
    TRUNCATE `sales_flat_quote`;
    TRUNCATE `sales_flat_quote_address`;
    TRUNCATE `sales_flat_quote_address_item`;
    TRUNCATE `sales_flat_quote_item`;
    TRUNCATE `sales_flat_quote_item_option`;
    TRUNCATE `sales_flat_quote_payment`;
    TRUNCATE `sales_flat_quote_shipping_rate`;
    TRUNCATE `sales_flat_shipment`;
    TRUNCATE `sales_flat_shipment_comment`;
    TRUNCATE `sales_flat_shipment_grid`;
    TRUNCATE `sales_flat_shipment_item`;
    TRUNCATE `sales_flat_shipment_track`;
    SET FOREIGN_KEY_CHECKS = 1;
    
  15. 安装时间过长,因此我检查 pdo_mysql.log 文件,并且一次又一次显示以下错误。显示错误:SQLSTATE [23000]:完整性约束违规:1062密钥'UNQ_INCREMENT_ID'的重复条目''11199-1' 固定: 所以我删除了表格中的第一个条目。

  16. 数据库Rapair步骤:必须使用 magento-db-repair-tool-1.1 (http:/)使用全新数据库修复新数据库/www.magentocommerce.com/wiki/1_-_installation_and_configuration/db-repair-tool)。报告结束时将显示所有修复。

  17. 现在您只需将网站转移到实时服务器即可。

答案 2 :(得分:2)

我认为Magento 1.4到1.7.x升级的最全面描述是这样的,由交钥匙网站提供:

在继续进行Magento升级的这一部分之前,了解Magento升级脚本将升级您的商店的版本非常重要。输入此命令以检查:

1
./mage list-upgrades

如果你会看到这个结果:

Updates for community:
Mage_All_Latest: 1.4.2.1 => 1.7.0.2
Lib_Js_Mage: 1.4.2.0 => 1.7.0.2
Lib_Varien: 1.4.2.0 => 1.7.0.2

这意味着您的Magento将升级到1.7.0.2版。如果它不是您所需要的,您可以将升级频道更改为“beta”并将您的Magento升级为RC(测试版)。

1 - 输入此命令将升级频道更改为稳定(请记住,“稳定”频道会将您的Magento升级到最新的1.7.x稳定版本):

1
./mage config-set preferred_state stable

在此之后,“./ image list-upgrades”命令将显示以下结果:

社区更新:

  Mage_All_Latest: 1.4.2.1 => 1.7.0.2.
    Lib_Js_Mage: 1.4.2.0 => 1.7.0.2.
    Lib_Varien: 1.4.2.0 => 1.7.0.2.
    Lib_Phpseclib: 1.4.2.0 => 1.7.0.2.
    Mage_Core_Adminhtml: 1.4.2.0 => 1.7.0.2.
    Mage_Core_Modules: 1.4.2.0 => 1.7.0.2.

2 - 选择频道后,您可以使用此命令将Magento升级到Magento 1.7.0.2):

1
./mage upgrade-all --force

如果“./ image upgrade-all -force”不起作用,您可以尝试执行此命令:

1
./mage install connect20.magentocommerce.com/community Mage_All_Latest --force

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

…

    Package upgraded: community/Mage_Locale_en_US 1.7.0.2
    Package upgraded: community/Lib_Mage 1.7.0.2
    Package upgraded: community/Lib_ZF 1.11.1.0
    Package upgraded: community/Lib_Js_Prototype 1.7.0.2.
    Package upgraded: community/Lib_ZF_Locale 1.11.1.0

现在升级已完成,您可以在浏览器中执行访问Magento商店的数据库升级,此过程将需要几分钟,请耐心等待。如果所有内容都已正确升级,您将在浏览器中看到升级后的商店。在数据库升级之前,建议增加PHP引擎的时间和内存限制。

如果无法增加它,您可以尝试通过SSH执行数据库升级,例如:

1

    php -f ./index.php

完成数据库升级后,您可以在Magento管理面板的页脚中查看商店的版本。

答案 3 :(得分:1)

检查您的apache日志。但是,听起来它在升级过程中被抓到了某个地方。确保所有文件都是新版本,备份数据库,并确保数据库连接信息正确无误。

您可能还想仔细检查数据库的大小。如果您的数据库很大,magento可能会超时。

答案 4 :(得分:1)

当前(1.4.0.1)数据库有多大?最近当我不得不升级7GB数据库时,整个周末在本地服务器上运行 - 这个漫长过程的原因是版本1.6有新的索引器并且数据库结构是重建的 - 安装脚本是在首次加载更新代码时触发的正在丢弃许多外键并创建具有很多约束的新外键。