所以,我正在将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";}
有谁解决了这个问题?谷歌不会给那些有同样问题的人给我任何答案。
答案 0 :(得分:0)
Magento 1.3中的表格是MyISAM,后来转换为InnoDB。现在您收到的150错误消息与FKs有关:
如果MySQL从CREATE TABLE语句报告错误号1005, 并且错误消息引用错误150,表创建失败 因为没有正确形成外键约束。同样的, 如果ALTER TABLE失败并且它引用错误150,则表示a 对于更改的内容,将错误地形成外键定义 表。显示最新的InnoDB的详细说明 服务器中的外键错误,发出SHOW ENGINE INNODB STATUS。
答案 1 :(得分: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中可以想到的最简单的方法是:
用户@ 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 newly_created_db< my_database_name.sql
6)现在以这种方式提取文件:
tar -xvvzf your_site_directory.tar.gz 这会将所有文件解压缩到当前目录
7)编辑db table core_config_data并设置站点的新安全/不安全URL
8)从管理员禁用缓存。
9)删除位于此处的缓存和会话目录: 在/ var /缓存 的/ var /会话
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)剩下的就是测试它并在生产服务器上移动这些文件。