1

所以,我将 Magento 安装从 1.3.2.1 升级到 1.7.0.2。但是当我尝试将数据库转换为新格式时出现以下错误。

a:5:{i:0;s:239:"Error in file: "/home/user/public_html/app/code/core/Mage/Customer/sql/customer_setup/mysql4-upgrade-1.4.0.0.7-1.4.0.0.8.php" - SQLSTATE[HY000]: General error: 1005 Can't create table 'user_new.customer_form_attribute' (errno: 150)";i:1;s:994:"#0 /home/user/public_html/app/code/core/Mage/Core/Model/Resource/Setup.php(645): Mage::exception('Mage_Core', 'Error in file: ...')
#1 /home/user/public_html/app/code/core/Mage/Core/Model/Resource/Setup.php(437): Mage_Core_Model_Resource_Setup->_modifyResourceDb('upgrade', '1.4.0.0.7', '1.6.2.0.1')
#2 /home/user/public_html/app/code/core/Mage/Core/Model/Resource/Setup.php(320): Mage_Core_Model_Resource_Setup->_upgradeResourceDb('1.4.0.0.7', '1.6.2.0.1')
#3 /home/user/public_html/app/code/core/Mage/Core/Model/Resource/Setup.php(235): Mage_Core_Model_Resource_Setup->applyUpdates()
#4 /home/user/public_html/app/code/core/Mage/Core/Model/App.php(417): Mage_Core_Model_Resource_Setup::applyAllUpdates()
#5 /home/user/public_html/app/code/core/Mage/Core/Model/App.php(343): Mage_Core_Model_App->_initModules()
#6 /home/user/public_html/app/Mage.php(683): Mage_Core_Model_App->run(Array)
#7 /home/user/public_html/index.php(87): Mage::run('', 'store')
#8 {main}";s:3:"url";s:1:"/";s:11:"script_name";s:10:"/index.php";s:4:"skin";s:7:"default";}

有谁解决了这个问题?谷歌只给有同样问题的人提供任何答案。

4

2 回答 2

0

Magento 1.3 中的表是 MyISAM,后来被转换为 InnoDB。现在您收到的 150 错误消息与 FK 有关:

如果 MySQL 从 CREATE TABLE 语句中报告错误号 1005,并且错误消息引用错误 150,则表创建失败,因为未正确形成外键约束。类似地,如果 ALTER TABLE 失败并且它引用错误 150,这意味着为更改的表将错误地形成外键定义。要显示服务器中最近的 InnoDB 外键错误的详细说明,请发出 SHOW ENGINE INNODB STATUS。

来源

于 2012-10-31T11:58:38.430 回答
0

将 Magento 从 1.3.2.1 升级到 1.7.0.2 是一个漫长的过程。错误几乎总是发生。您没有提到您计划如何升级的方式,它在这个问题中起着至关重要的作用。当然,一步一步地移动 1.3 到 1.4 到 1.5 到 1.6 到 1.7 更安全。

你为你的数据做了备份吗?如果是,最好从头开始。

这里的小问题是不可避免的,特别是如果您想要升级的 Magento 版本非常旧。

这是更新 Magento 的标准程序。仅供您查看,因为您可以选择另一种方式来更新商店。

1)知道你面临什么:

如果将您的特定版本的 Magento 升级到最新版本有什么特别之处,请查看谷歌。如果不出意外,您将准备好解决需要解决的问题。

2)备份您的文件

我们通常像这样从 CLI 执行此操作: tar -cvvzf your_site_directory.tar.gz your_site_directory/ 2>error.log

3)备份你的数据库

您也可以像这样从 CLI 执行此操作:

mysqldump -u THIS_IS_YOUR_USERNAME_FOR_DB -h localhost -pTHIS_IS_YOUR_USERNAME_FOR_DB my_database_name | gzip -9 > my_database_name.sql.gz

4)将这些文件复制到新位置

如果您需要在两台服务器之间移动文件,我能在 CLI 中想到的最简单的方法是:

scp /path_to_some_file/your_site_directory.tar.gz user@REMOTE_SERVER_ADDRESS:/some_dir_on_remote_server 您可以对备份数据库执行相同操作

5)现在是时候将数据库导入新创建的数据库了:

a) 提取 my_database_name.sql.gz

b) mysql –verbose –user=THIS_IS_YOUR_USERNAME –password=THIS_IS_YOUR_PASSWORD new_created_db < my_database_name.sql

6)现在以这种方式提取文件:

tar -xvvzf your_site_directory.tar.gz 这会将所有文件解压到当前目录

7) 编辑数据库表 core_config_data 并设置您站点的新安全/不安全 URL

8)从管理员禁用缓存。

9) 删除位于此处的缓存和会话目录:/var/cache /var/session

rm /your_path_to/var/session -R rm /your_path_to/var/cache -R

10) 执行位于/downloader/pearlib 目录中的“clean” bash 脚本

a) 运行 chmod +x clean 以执行此脚本 b) ./clean 执行脚本

11)最后从您的 Magento 管理员转到 Magento 连接管理器 粘贴此扩展以升级 Magento:magento-core/Mage_All_Latest 完成后,您应该有新的 Magento,但是如果有一些自定义编码,您应该真的知道发生了什么继续使用您的代码。

12)剩下的就是测试它并将这些文件移动到生产服务器上。

于 2013-01-04T11:11:45.340 回答