我最近迁移了域名,在我的数据库中,我存储了包含旧域名的完整路径,现在已破坏:)
我需要做的是从
更改数据库表中的值http://www.olddomain.com/img/some/path
到
http://www.newdomain/same/dir/structure/as/old/domain
唯一需要注意的是,必须保留网址末尾的照片名称。基本上,我只需要更改主机名。
这可能吗?如果是这样,怎么样? :)
答案 0 :(得分:1)
试试这个:
UPDATE table SET column = REPLACE(column,"www.olddomain.com","www.newdomain.com");
在运行更新许多记录的查询之前,请务必确保备份数据库(如此)。
答案 1 :(得分:1)
使用MySQL数据库,在命令行上执行此操作:
1 - 将完整的数据库放入文件中:
mysqldump -uYOURUSERNAME -pYOURPASSWORD YOURDBNAME > YOURDBNAME.sql
2 - 在之前的DB文件中将olddomain.com替换为newdomain.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