问题描述
我有一个安装在开发环境中的 Wordpress 数据库… 因此,对站点本身的所有引用都具有固定的 IP 地址 (例如 192.168.16.2) 。现在,我必须将该数据库迁移到主机上的新 Wordpress 安装。问题是,SQL 转储包含很多对 IP 地址的引用,我必须将其替换为:my_domain.com 。
我可以使用 sed
或其他一些命令来改变命令行,问题是有很多使用 JSON 的配置数据。所以呢?那么,你知道,JSON 数组使用的东西就像:s:4:
知道一个元素有多少个字符,因此,如果我只是用域名替换 IP,配置文件将被破坏。
几年前,我使用 Windows 的应用程序,允许更改数据库中的值并处理 JSON 数组。不幸的是,我忘了应用程序的名称… 所以问题是:你知道任何允许我做我想要的应用程序吗?
最佳解决方案
您正在查看的数据不是 JSON 格式的。 JSON 通常不存储这样的值类型和长度。你所看到的是 SERIALIZED 数据。谷歌搜索 「mysql 替换序列化」 产生此页面,这可能有助于:http://davidcoveney.com/mysql-database-search-replace-with-serialized-php/
次佳解决方案
食典有体面的指导 – Changing Site URL 。
基本上有几个地方有 URL 重要或没有这么多 (我可能会缺少一些):
-
控制 WP 认为网站的位置的
home
和siteurl
选项; -
发布 GUID,这些看起来像链接,但真的他们不是唯一的标识符。我不是绝对确定它们是不相关的,但是我在测试堆栈上改变了 URL,从来没有打扰过更新这些。
-
邮政机构中的联系;
-
可能在插件设置中链接。
第三种解决方案
正如 Rarst 所说,数据库中只有两个设置需要改变。导入数据库后,我登录到 PHPMyAdmin 并直接编辑数据库。
我一直在 PC 上使用开发服务器来导入数据源,它们的 URL 附加到了 http://localhost/testsite/post-name/的帖子中,并没有造成问题。
我以前使用 SQL 搜索和替换,直到我意识到没有关系。我已将一些网站从一个域迁移到另一个域,并且我在内容中使用绝对 URL,我将使用 SQL 搜索和替换选项。
update wp_posts set post_content = replace(post_content,'http://www.olddomain/','http://www.newdomain/');
大卫
第四种方案
这是一个惊人的资源,我已经加入书签,我再次回到时间和时间 http://www.onextrapixel.com/2010/01/30/13-useful-wordpress-sql-queries-you-wish-you-knew-earlier/
他们说
UPDATE wp_options SET option_value = replace(option_value, 'http://www.oldsiteurl.com', 'http://www.newsiteurl.com') WHERE option_name = 'home' OR option_name = 'siteurl';
第五种方案
您可以使用 wp-config.php
中的常量设置这些值。之后,您可以通过插件管理员更改数据库中的条目。将其写入 wp-config.php
,DB 中的值不相关:
define('WP_HOME', 'http://example.com/to-wordpress');
define('WP_SITEURL', 'http://example.com/to-blog');
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。