我正在将magento从1.4.0.1升级到1.7.0.2。最初有一些错误;修复这些问题后,现在升级将运行5个小时,并且从未完成。没有错误显示。知道为什么会这样吗?
我在查询日志中通过更改 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; SET FOREIGN_KEY_CHECKS = 0; SET UNIQUE_CHECKS = 0; 。
在新版本的magento中复制旧项目文件。我的主题在空白文件夹中。如果默认文件夹中有模板文件,则复制默认值。
•应用程序\设计\前端\默认\空白
•应用\代码\本地
•皮肤\前端\默认/空白
•app \ etc \ modules(复制不在新版本中的文件)。
在MySql查询日志中,通过更改 lib \ Varien \ Db \ Adapter \ Pdo \ Mysql.php中* 的以下行 *
protected $_debug = true;
protected $_logAllQueries = true; protected $_debugFile = ‘var/debug/pdo_mysql.log’;
搜索并更改 CREATE TABLE 以 在 不存在的情况 下 创建CREATE TABLE 在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”
修复:我从 pdo_mysql.log 文件中发现问题出在 sales_flat_order 表中,这意味着存在许多主键重复项,因此我截断了所有sales表。这实际上是我的旧数据库中的错误。在新版本中,increment_id为UNIQUE。我们不能跳过主键检查,因此我删去了与销售有关的所有表。如果您有相同的问题,则截断与该功能相关的所有表,例如如果客户重复,则截断所有客户表,或者如果目录中则截断目录表。但是请记住,在发生错误时应进行截断,因为如果在安装开始之前就被截断了,安装程序将不会读取现有数据,最后您将丢失一些记录,例如缺少某些订单或发票。
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)使用新数据库修复新数据库。最后,报告将显示所有修复程序。
现在,您只需将网站转移到实时服务器即可。