我有一个字符串,包含在wordpress安装(服务器名称)内数千次,包含多个列,记录和表.
我想用另一台服务器的位置更新它 - 我们正在移动内容.
所以源代码就像http:// my-server1/some/link/to/something,我想用http:// my-other-server/some/link/to/something代替它.我基本上希望为http:// my-server1的每个实例重复此过程.
在MySQL中有一个简单的方法吗?一个工具?或者我不得不更新每个记录有问题吗?
谢谢,
一种粗略(但有效)的方法是将模式转储到文件中,仔细应用搜索和替换然后重新导入.
事实上我今天做了:)
在谷歌搜索中遇到过这个,但这可能对某些人有所帮助.如果你知道表和列(你可以在phpMyAdmin中使用通配符搜索找到它),
UPDATE table_name SET column_name = REPLACE(column_name,' http://oldsite.com','http://newsite.com ');
用您自己的替换粗体部分.
如果您有一个大型数据库,则可以将其应用到可以遍历每个表和列的脚本中.
如果您乐意重新导入整个数据库,那么MySQL转储方法将是最好的选择.对于任何不想这样做的人 - WordPress核心安装实际上只包含11个表,其中很少是内容列,因此按列替换也同样容易.假设您没有引用链接或字符串的插件表,这将是您的SQL:
UPDATE wp_commentmeta SET meta_value = REPLACE(meta_value,'xcurrentx','xreplacementx'); UPDATE wp_comments SET comment_content = REPLACE(comment_content,'xcurrentx','xreplacementx'); UPDATE wp_links SET link_description = REPLACE(link_description,'xcurrentx','xreplacementx'); UPDATE wp_options SET option_value = REPLACE(option_value,'xcurrentx','xreplacementx'); UPDATE wp_postmeta SET meta_value = REPLACE(meta_value,'xcurrentx','xreplacementx'); UPDATE wp_posts SET post_content = REPLACE(post_content,'xcurrentx','xreplacementx'); UPDATE wp_posts SET post_title = REPLACE(post_title,'xcurrentx','xreplacementx'); UPDATE wp_posts SET post_excerpt = REPLACE(post_excerpt,'xcurrentx','xreplacementx'); UPDATE wp_term_taxonomy SET description = REPLACE(description,'xcurrentx','xreplacementx'); UPDATE wp_usermeta SET meta_value = REPLACE(meta_value,'xcurrentx','xreplacementx');