我正在将magento从1.4.0.1升级到1.7.0.2.最初有一些错误; 修复后,现在升级运行了5个小时,但从未完成.没有显示错误.知道为什么会这样吗?
我最近将客户magento从V1.4升级到V1.7.2.0,我按照以下步骤操作: - 以下是将网站从Magento v1.4.0.0升级到v1.7.2.0的要点: -
以压缩格式收集实时数据库备份,不包含以下表: -
"log_visitor_online"
将zipped备份数据库解压缩到您自己的文件系统中的任何文件夹中.
启动本地WAMP/XAMPP,并使用Web应用程序"phpMyAdmin"创建测试数据库"test_something"或任何其他名称.
打开命令提示符窗口,然后键入"mysql"以启动MySQL命令提示符.
使用命令提示符将解压缩的数据库导入测试数据库,这样可以更快地完成任何错误.
成功导入后,从phpMyAdmin运行文件"DB Changes.txt"中提到的SQL.
在本地WAMP/XAMPP中提取新的Magento v1.7.2.0,并使用带有旧的livesite数据的测试数据库开始安装此Magento.
在成功安装Magento之后,使用命令提示符以压缩格式导出和转储新升级的数据库,这样它将更快,没有任何错误.
提取新的压缩Magento或将新的解压缩的Magento v1.7.2.0上传到实时服务器的文件系统,无需安装任何东西.
将此压缩数据库上载到实时服务器的文件系统中,然后打开实时服务器的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
),KEY IDX_VISITOR
(visitor_id
))ENGINE = InnoDB DEFAULT CHARSET = utf8 COMMENT ='Customers log information';
-
log_quote
CREATE TABLE IF 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
',
deleted_at
datetime DEFAULT NULL,PRIMARY KEY(quote_id
))ENGINE = InnoDB DEFAULT CHARSET = utf8 COMMENT ='引用日志数据';
-
log_summary
CREATE TABLE IF 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',
PRIMARY KEY(summary_id
))ENGINE = InnoDB DEFAULT CHARSET = utf8 COMMENT ='Summary log information';
-
log_url
CREATE TABLE IF 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
',PRIMARY KEY(url_id
),KEY IDX_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 ='Detale information about about网址访问';
-
log_visitor
CREATE TABLE IF 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',
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 ='System visitor log';
-
log_visitor_info
CREATE TABLE IF 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,PRIMARY KEY(visitor_id
))ENGINE = InnoDB DEFAULT CHARSET = utf8 COMMENT ='访问者的附加信息';
-
log_visitor_online
CREATE TABLE IF 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_TYPE
(visitor_type
),KEY IDX_VISIT_TIME
(first_visit_at
,last_visit_at
),KEY IDX_CUSTOMER
(customer_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;
我通过更改lib\Varien\Db\Adapter\Pdo\Mysql.php文件中的以下行来查询日志记录
protected $_debug = true;
protected $_logAllQueries = true;
protected $_debugFile = 'var/debug/pdo_mysql.log';
Run Code Online (Sandbox Code Playgroud)
然后通过分析pdo_myql.log文件,我发现一个查询正在执行时出错,因此magento安装程序一次又一次地运行它.
错误是.
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry ''11199-1' for key 'UNQ_INCREMENT_ID'
Run Code Online (Sandbox Code Playgroud)
所以我删除了数据库表和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; SET FOREIGN_KEY_CHECKS = 0; SET UNIQUE_CHECKS = 0; .
在新版本的magento中复制旧项目文件.我在空白文件夹中有主题.如果默认文件夹中有模板文件,请复制默认值.
•app\design\frontend\default\blank
•app\code\local
•skin\frontend\default/blank
•app\etc\modules(复制不在新版本中的文件).
通过更改lib\Varien\Db\Adapter\Pdo\Mysql.php中的以下行来检查MySql查询
protected $_debug = true;
protected $_logAllQueries = true;
protected $_debugFile = 'var/debug/pdo_mysql.log';
Run Code Online (Sandbox Code Playgroud)搜索并将CREATE TABLE更改 为CREATE TABLE IF NOT NOT EXISTS in code/core/mage /.
更改表core_config_data中的以下条目(使用项目文件夹名称).
• web/unsecure/base_url | http://localhost/magento171/
• web/secure/base_url | http://localhost/magento171/
Run Code Online (Sandbox Code Playgroud)将/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"
修复:我从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;
Run Code Online (Sandbox Code Playgroud)安装时间过长,因此我检查了pdo_mysql.log文件,并且一次又一次地显示以下错误.显示错误:SQLSTATE [23000]:完整性约束违规:1062密钥'UNQ_INCREMENT_ID'的重复条目''11199-1'修复:所以我删除了表中的第一个条目.
Database Rapair步骤:必须使用magento-db-repair-tool-1.1(http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/db-repair-tool)使用新数据库修复新数据库.最后,报告将显示所有修复程序.
现在您只需将网站转移到实时服务器即可.