magento转移测试总结

王雾 发布于 2011/03/25 13:18
阅读 1K+
收藏 1

magento转移服务器和magento建立多站点总结
第一、 我们首先要做的就是把服务器上的magento转移到本地上来。
详细步骤:
1、 直接用magento的备份系统把网上数据库备份。如图:
2、 数据备份完成后点击下载。
3、 在网上找一个数据库恢复的软件(我用的是sqlyog,小而且好用。)把刚才我们备份的数据文件还原到本地。
4、 把网上的magento备份打包。下载到本地解压到你本地服务器的目录。
5、 在本地服务器中找打刚才解压的文件找到数据库配置文件app->ect->local.xml
把里面的数据改成本地的mysql和刚才你恢复的数据库名称。
现在你可以试着打开本地的系统,你会发现一个问题?
第一、 本地网站的后来登陆不了。
第二、 网站上所有相关的链接全是服务器上的。而不是本地的。
解决办法:
1. 修改刚才我们备份的数据库,找到表core_config_data 修改里面的两个字段,
把里面这两个字段改成本地的系统的的地址—这样就ok了。
2. 现在打开本地系统首页会出现错误,不用着急,直接进入网站后台,清除网站的缓存。再打开首页就行了。
6、 进入后台后还要改一些网站配置。系统->设置。在设置里面点击网站选项。
把这里的两个值改成本地的访问地址。保存,继续选择你当前的商店把里面的访问路径改成本地的。选择你的网站界面。看看你的设置成功没有
要是成了。现在就打开你的网站首页。看看里面的相关链接也试着点开看看,要是没有问题了就说明我们magento算是移植成功了。
第三、 magento建设多个站点。
进入网站后台系统。 目录里面选择商品分类。
选择 添加根分类。
注意这两点的设置。
保存根分类 。
找到系统选择管理商店。 ,点击新建网站。
保存。
在选择新建商店
注意:网站就选择刚才建的网站,根分类选择我们刚才建的根分类。
检查无误后保存。
在选择新建商店界面
注意商店的名字是上一步我们建的商店名称。
状态为启用。
三个步骤完成后
所有的东西都能看的到。
再到 系统->设置
在 选择刚才建的网站名称tow website。在设置的选项上选择网站。
把这里的数据改成你新网站的域名。还有下面这个一并改了。
修改完成后保存。选择我们刚才新建的japanese界面。看看里面的设置是不是正确。要是无误后我们打开本地系统文件。找到根目录下面的index.php文件,打开。
找到Mage::run();
用switch($_SERVER['HTTP_HOST']) {
case ‘www.test.com’:
[...]

 

注意在移植数据库时可能会出现以处错误:

index:***app\code\core\Mage\Core\Model\Mysql4\Config.php on line 92的解决办法

a:4:{i:0;s:116:" Notice: Undefined index :  0  in ***\ app\code\core\Mage\Core\Model\Mysql4\Config.php on line 92 ";i:1;s:681:"#0 ***\app\code\core\Mage\Core\Model\Mysql4\Config.php(92): mageCoreErrorHandler(8, 'Undefined index...', 'D:\chen\www\mym...', 92, Array)
#1 ***\app\code\core\Mage\Core\Model\Config.php(344): Mage_Core_Model_Mysql4_Config->loadToXml(Object(Mage_Core_Model_Config))

问题原因

Mysql使用工具 (如PhpMyAdmin / MySQL-Front / Navicat for MySQL / SQLyogEnt等)重载转储文件(也就是重导.sql文件)的时候,默认在执行过程中遇到0值一般会生成新的序列号。

Magento的core_store表的admin的store_id为0;core_store_group表的Default的group_id也为0。

在导入.sql文件的时候,原本的0变成了新的序列号,破坏了Magento原有的数据。

解决办法

1,

执行一遍下面语句。
SET FOREIGN_KEY_CHECKS=0;
update `core_store` set store_id = 0 where code='admin';
update `core_store_group` set group_id = 0 where name='Default';
update `core_website` set website_id = 0 where code='admin';
update `customer_group` set customer_group_id = 0 where customer_group_code='NOT LOGGED IN';
SET FOREIGN_KEY_CHECKS=1;

2,

在导的.sql文件最前面加入:SET SQL_MODE = NO_AUTO_VALUE_ON_ZERO;

补充,

Mysql的模式:NO_AUTO_VALUE_ON_ZERO
这个项影响 AUTO_INCREMENT 列的处理。
正常情况下,当我们向 AUTO_INCREMENT 列插入0或NULL的时候,会产生下一个序列号。
而mode = NO_AUTO_VALUE_ON_ZERO的时候,只有NULL才产生新的序列号,屏蔽了0。
加载中
0
hr_beijing
hr_beijing

.额。。哈哈。。不错。

返回顶部
顶部