问题描述

我有一个安装在开发环境中的 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 认为网站的位置的 homesiteurl 选项;

  • 发布 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。