我最近迁移域和我的数据库值,我已经存储在包含旧域,现在打破了:)帮助查询,改变就在DB
我需要做的完整路径是在变化值从
http://www.olddomain.com/img/some/path
数据库表
http://www.newdomain/same/dir/structure/as/old/domain
唯一需要注意的我必须保留url末尾的照片名称。所以基本上,我不得不改变主机名称。
这可能吗?如果是这样,怎么样? :)
我最近迁移域和我的数据库值,我已经存储在包含旧域,现在打破了:)帮助查询,改变就在DB
我需要做的完整路径是在变化值从
http://www.olddomain.com/img/some/path
数据库表
http://www.newdomain/same/dir/structure/as/old/domain
唯一需要注意的我必须保留url末尾的照片名称。所以基本上,我不得不改变主机名称。
这可能吗?如果是这样,怎么样? :)
试试这个:
UPDATE table SET column = REPLACE(column,"www.olddomain.com","www.newdomain.com");
运行一个查询,更新多条记录(因为会)前,始终确保你做你的数据库的备份。
与MySQL数据库,这样做在命令行:
1 - 将充分DB文件中的:
mysqldump -uYOURUSERNAME -pYOURPASSWORD YOURDBNAME > YOURDBNAME.sql
2 - 与newdomain.com在先前的DB更换olddomain.com文件:
sed -i 's/olddomain.com/newdomain.com/g' YOURDBNAME.sql
3 - 删除原始数据库替换为域中的所有表(请确保您有一个备份),并更新数据库中的所有表,适用的所有行:
mysql -uYOURUSERNAME -pYOURPASSWORD YOURDBNAME < YOURDBNAME.sql
这是有保证的工作。我用它来更新Magento数据库(300多个表)上的域几次。
仅供参考,sed是一个用于“过滤和转换文本”的linux/unix命令行工具,我不知道是否有Windows版本。
PS - 如果您确实需要在域中放入斜杠(/)(例如,如果您使用www.example.com替换www.example.com/sitedir),则应该避开sed字符串中的斜杠,即代替使用/,使用\ /。对于这个例子,你会这样做:
sed -i 's/www.example.com\/sitedir/www.example.com/g' YOURDBNAME.sql
@AJ有没有办法做到这一点,以取代旧的域没有?我还会尝试看看如果我最终得到的路径如下所示会发生什么情况:/ some/path – Genadinik 2011-06-08 22:14:00
如果@Genadinik具有复合域路径,则这不起作用。 http://www.olddomain.com/img/some/path以及文本列中的域引用,例如在CMS中。 – faken 2011-06-08 22:19:36
@Genadinik:你可以通过REPLACE(column,'http://www.olddomain.com','')'完全去掉旧的域名。我认为'REPLACE(专栏,'http://www.olddomain.com/img/','/ img /')'虽然可能更安全。而且,当然还需要对您的生产数据进行**复制**。 – 2011-06-08 22:35:17