我正在将 magento 从 1.4.0.1 升级到 1.7.0.2。最初有一些错误;修复这些之后,现在升级运行了 5 个小时并且永远不会完成。没有错误显示。知道为什么会这样吗?
5 回答
我最近将客户端 magento 从 V1.4 升级到 V1.7.2.0,我按照以下步骤操作:- 以下是将网站从 Magento v1.4.0.0 升级到 v1.7.2.0 的要点:-
以压缩格式收集实时数据库备份,不包含下表:-
- “log_customer”</li>
- “log_quote”</li>
- “日志摘要”</li>
- “log_url”</li>
- “log_url_info”</li>
- “log_visitor”</li>
- “log_visitor_info”</li>
“log_visitor_online”</p>
在您自己的文件系统中的任何文件夹中解压缩压缩的备份数据库。
启动本地 WAMP / XAMPP,并使用 Web 应用程序“phpMyAdmin”创建一个测试数据库“test_something”或任何其他名称。
打开命令提示符窗口,然后键入“mysql”以启动 MySQL 命令提示符。
将解压后的数据库导入到测试数据库中,使用命令提示符,这样会快很多,不会出错。
成功导入后,从 phpMyAdmin 运行文件“DB Changes.txt”中提到的 SQL。
在本地 WAMP / XAMPP 中提取一个新的 Magento v1.7.2.0,然后使用带有旧现场数据的测试数据库开始安装这个 Magento。
成功安装 Magento 后,使用命令提示符以压缩格式导出和转储新升级的数据库,这样会更快而不会出现任何错误。
解压新压缩的 Magento 或将 v1.7.2.0 的新解压缩 Magento 上传到实时服务器的文件系统中,无需安装任何东西。
将此压缩数据库上传到实时服务器的文件系统中,然后打开实时服务器的 PuTTY。
上传本地 WAMP / XAMPP 的“app/etc/local.xml” Magento 文件的副本,以替换实时 Magento 的“app/etc/local.xml”文件。请记住根据新的实时服务器更改此文件的所有数据库凭据,然后再将其上传到实时服务器。
请记住不要从 Web 浏览器浏览 Magento 以获取实时 Web 服务器,直到第 14 点完成。
使用 PuTTY 命令,提取压缩后的数据库,然后将其导入到直播网站的新数据库中。
导入成功后,搜索“core_config_data”数据库表,“path”列值为“%base_url%”。将“value”列的所有值替换为活动站点“http://www.livesite.com/”的完整 URL,而不提及“index.php”。
将主题及其相关文件上传到新服务器的文件系统。
上传扩展/模块检查兼容性。
确保在系统配置中配置所需的模块来自管理面板。
DB Changes.txt 如下:- CREATE TABLE IF 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
), KEYIDX_VISITOR
(visitor_id
) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='客户日志信息';
--
-- 表的表结构
log_quote
如果不存在则创建表
log_quote
(quote_id
int(10)无符号非空默认值'0',visitor_id
bigint(20)无符号默认空值,created_at
日期时间非空值默认值'0000-00-00 00:00:00',deleted_at
日期时间默认空值,主键(quote_id
) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='引用日志数据';
--
-- 表的表结构
log_summary
如果不存在则创建表
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', PRIMARY KEY (summary_id
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='摘要日志信息';
--
-- 表的表结构
log_url
如果不存在则创建表
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
), KEYIDX_VISITOR
(visitor_id
) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='URL 访问历史';
--
-- 表的表结构
log_url_info
CREATE TABLE IF 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, PRIMARY KEY (url_id
) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='有关的详细信息网址访问';
--
-- 表的表结构
log_visitor
如果不存在则创建表
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, PRIMARY KEY (visitor_id
) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='系统访问者日志';
--
-- 表的表结构
log_visitor_info
如果不存在则创建表
log_visitor_info
(visitor_id
bigint(20)无符号非空默认值'0',http_referer
varchar(255)默认空值,http_user_agent
varchar(255)默认空值,http_accept_charset
varchar(255)默认空值,http_accept_language
varchar(255)默认空值,server_addr
bigint(20) DEFAULT NULL,remote_addr
bigint(20) DEFAULT NULL, PRIMARY KEY (visitor_id
) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='访客的附加信息';
--
-- 表的表结构
log_visitor_online
如果不存在则创建表
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
), KEYIDX_VISITOR_TYPE
(visitor_type
), KEYIDX_VISIT_TIME
(first_visit_at
,last_visit_at
), KEYIDX_CUSTOMER
(customer_id
) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;截断
report_event
;截断
report_viewed_product_index
;截断
report_compared_product_index
;截断
dataflow_batch_export
;ALTER TABLE
orders
CHANGEurl
parent_id
VARCHAR( 255 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL;
我通过更改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 的步骤。其他项目显示的这些错误会有所不同,因为每个项目都有不同的数据。
为新版本创建一个新数据库。(我使用 SQLyog是因为它适用于大型数据库的导入和导出)。
在www或htdocs中提取并安装新版本 1.7.0.1 。我的项目名称是magento171。
创建新数据库,因为我们在修复步骤中需要新的数据库。
将旧数据库数据导入新数据库。
在新安装的 magento 版本中更改etc/local.xml中的新数据库名称。
在etc/local.xml 中找到并将SET NAMES utf8更改为SET NAMES utf8;设置 FOREIGN_KEY_CHECKS=0;SET UNIQUE_CHECKS=0;.
将旧项目文件复制到新版本的 magento 中。我在空白文件夹中有主题。如果默认文件夹中有模板文件,则复制默认值。
• 应用\设计\前端\默认\空白
• 应用\代码\本地
• 皮肤\前端\默认/空白
• app\etc\modules(复制不在新版本中的文件)。
通过更改lib\Varien\Db\Adapter\Pdo\ Mysql.php中的以下行,在 MySql 查询日志记录中
protected $_debug = true; protected $_logAllQueries = true; protected $_debugFile = 'var/debug/pdo_mysql.log';
搜索并将 CREATE TABLE更改 为CREATE TABLE IF NOT EXISTS In code/core/mage/。
更改表core_config_data中的以下条目(使用您的项目文件夹名称)。
• web/unsecure/base_url | http://localhost/magento171/ • web/secure/base_url | http://localhost/magento171/
将/errors/local.xml.sample重命名为/errors/local.xml以启用 error_reporting 。
通过删除var\cache中的所有数据来清除 magento缓存。
转到浏览器并键入您的项目路径。 http://localhost/magento171/并密切关注浏览器和var/debug/pdo_mysql.log文件。
我遇到的第一个错误是:文件中的错误:“D:\xampp\htdocs\magento171\app\code\core\Mage\Sales\sql\sales_setup\mysql4-upgrade-1.3.99-1.4.0.0.php”
- SQLSTATE [23000]:违反完整性约束:1062 键 'PRIMARY' 的重复条目 '7'
修复:我从pdo_mysql.log文件中发现问题出在sales_flat_order表中,这意味着存在许多重复的主键条目,因此我截断了所有销售表。这实际上是我的旧数据库中的错误。在新版本中,increment_id 是唯一的。我们不能跳过主键检查,所以我截断了所有与销售相关的表。如果您有相同的问题,则截断与该功能相关的所有表,例如如果在客户中重复则截断所有客户表,或者如果在目录中则截断目录表。但是请记住,应该在发生错误时进行截断,因为如果在安装开始之前截断,安装程序将不会读取现有数据,最后您会丢失一些记录,例如丢失一些订单或发票。
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;
安装时间太长,所以我检查了pdo_mysql.log文件,并且一次又一次地显示以下错误。显示错误:SQLSTATE[23000]:完整性约束违规:1062 键 'UNQ_INCREMENT_ID'' 的重复条目 ''11199-1' 修复:所以我删除了表中的第一个条目。
数据库修复步骤:需要使用magento-db-repair-tool-1.1 (http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/db-repair-tool) 用新数据库修复新数据库。报告结束时将显示所有修复。
现在您可以简单地将网站转移到实时服务器。
我认为关于 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 版本。如果这不是您需要的,您可以将升级通道更改为“测试版”并将您的 Magento 升级到 RC(测试版)版本。
1 – 输入此命令将升级通道更改为稳定(请记住,“稳定”通道会将您的 Magento 升级到最新的 1.7.x 稳定版本):
1
./mage config-set preferred_state stable
在此之后,“./mage 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
如果“./mage 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 管理面板的页脚查看您的商店的版本。
检查您的 apache 日志。但是,听起来它在升级过程中的某个地方被卡住了。确保你所有的文件都是新版本,备份你的数据库,并确保你的数据库连接信息是正确的。
您可能还需要仔细检查数据库的大小。如果您的数据库很大,magento 可能会超时。
当前(1.4.0.1)数据库有多大?最近当我不得不在本地服务器上升级 7GB 数据库时,整个周末都在本地服务器上 - 如此漫长的过程的原因是 1.6 版有新的索引器并且数据库结构被重建 - 安装脚本意味着在第一次加载更新代码时触发正在删除大量外键并创建具有很多约束的新键。