我正在使用此处的陈述:
http://www.mydigitallife.info/2007/10/01/how-to-move-wordpress-blog-to-new-domain-or-location/
但我必须修改它们,因为我使用的是多用户,它有不同的表结构(奇怪的编号表)。正如你在previous question中看到的那样,这一切都非常有问题......所以我的问题是:
我可以在该数据库的每个表格中将 http://old-domain.com 更改为 http://new-domain.com 吗?我如何进行这样的搜索并用mysql替换?或者可能还有其他东西可以更好地用于此任务?
答案 0 :(得分:8)
您可以将整个数据库转储到.sql文件并执行替换并将其重新导入。
要将db转储到sql文件,你可以使用mysqldump命令,或者你可以做phpmyadmin
mysqldump --opt -uUSERNAME -pPASSWORD -h MYSQLDOMAIN YOURDB > yourdbdump.sql
要替换.sql文件中的文本,您可以这样做
sed -ie 's/old-domain.com/new-domain.com/g' yourdbdump.sql
要恢复它
mysql -uUSERNAME -pPASSWORD -h MYSQLDOMAIN YOURDB < yourdbdump.sql
答案 1 :(得分:3)
WordPress MU是一个痛苦的迁移屁股。
没有任何内容可以用于表格并替换这些网址。你要小心编辑在案件的网址存储任何序列化对象或数组里面,因为这样会破坏数据完整性的SQL转储文件。
如果你想直接在MySQL内部进行,你可以这样做,但这很费时间。它也是最安全的。
这将是最容易在phpMyAdmin,即使是经验SQL大师的phpMyAdmin是只是简单方便,因为你要经常编辑SQL查询。基本查询是:
Update "table_name"
SET "column_name" = REPLACE("column_name","find","replace")
WHERE "column_name" LIKE "%find%"
因此,在您的情况下,对于帖子表:
Update wp_1_posts
SET post_content = REPLACE(post_content,"www.oldurl.com","www.newurl.com")
WHERE post_content LIKE "%www.oldurl.com%"
接下来,查看postmeta表。如果有序列化数据,你可能会遇到麻烦。所以,做一个搜索第一,看看有什么数据的模样,看看是否有你应该离开了发现的任何具体领域/替换脚本。您对此表的更新看起来很像最后一个:
Update wp_1_postmeta
SET meta_value = REPLACE(meta_value,"www.oldurl.com","www.newurl.com")
WHERE meta_value LIKE "%www.oldurl.com%"
如果找到了需要排除的字段,请修改脚本,如下所示:
Update wp_1_postmeta
SET meta_value = REPLACE(meta_value,"www.oldurl.com","www.newurl.com")
WHERE meta_value LIKE "%www.oldurl.com%"
AND meta_name NOT IN ('meta_name_1', 'meta_name_2')
选项表应该是手工完成的 - 你有太多的潜力通过自动化来搞砸了。查找siteurl
,home
和fileupload_url
字段。查找可能存储值的任何其他内容并手动更新。
然后适当更新wp_blogs和wp_site。
迁移MU是噩梦的组成部分。慢下来,看看所有内容,最重要的是在主要数据的副本上做所有这些以便先测试。数据库空间很便宜,丢失的数据不是。
答案 2 :(得分:0)
您需要INSERT()
功能。