如何在WordPress数据库中替换域名?

时间:2010-12-21 作者:Cristian

我有一个Wordpress数据库,安装在开发环境中。。。因此,所有对站点本身的引用都有一个固定的IP地址(比如192.168.16.2)。现在,我必须将该数据库迁移到主机上的新Wordpress安装。问题是SQL转储包含大量对IP地址的引用,我必须将其替换为:my\\u domain。通用域名格式。

我可以用sed 或者其他命令来更改命令行中的,问题是有很多使用JSON的配置数据。那又怎样?正如您所知,JSON数组使用如下内容:s:4: 要知道一个元素有多少个字符,因此,如果我只是用域名替换IP,配置文件就会损坏。

几年前,我使用了一个Windows应用程序,它允许更改数据库中的值并处理JSON数组。很遗憾,我忘记了应用程序的名称。。。所以问题是:你知道有什么应用程序可以让我做我想做的事吗?

10 个回复
最合适的回答,由SO网友:MathSmath 整理而成

您查看的数据不是JSON格式的。JSON(通常)不会这样存储值类型和长度。您所看到的是序列化数据。google搜索“mysql替换序列化”将生成此页面,这可能有助于:http://davidcoveney.com/mysql-database-search-replace-with-serialized-php/

SO网友:Rarst

Codex有体面的指南-Changing Site URL.

基本上有几个地方是重要的,或者不是那么重要(我可能错过了一些):

  • homesiteurl 控制WP认为现场位置的选项

SO网友:David Law

正如Rarst上面所说,数据库中只有两个设置需要更改。导入数据库后,我登录到PHPMyAdmin并直接编辑数据库。

我一直在我的电脑上使用开发服务器来导入数据源,他们将URL附在帖子上http://localhost/testsite/post-name/ 而且它从来没有造成问题。

我曾经使用SQL搜索和替换,直到我意识到这无关紧要。我已经将几个站点从一个域迁移到了另一个域,在内容中有绝对URL的地方,我将使用SQL搜索和替换选项。

update wp_posts set post_content = replace(post_content,\'http://www.olddomain/\',\'http://www.newdomain/\');
大卫

SO网友:Tom

这是一个令人惊奇的资源,我已将其添加到书签中,并一次又一次地返回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\';

SO网友:bueltge

您可以在wp-config.php. 之后,您可以在需要时通过插件管理员更改数据库中的条目。在wp-config.php DB中的值不相关:

define(\'WP_HOME\', \'http://example.com/to-wordpress\');
define(\'WP_SITEURL\', \'http://example.com/to-blog\');

SO网友:MikeSchinkel

看看我对这个问题的回答:

它解决了您在清理数据时遇到的问题,也可以使用挂钩针对特定的数据迁移需求进行定制。

希望有帮助。

SO网友:Mark

简单的SQL查询-无需复杂的替换内容:

update wp_options set option_value = \'http://mynewdomain.com\' where option_name = \'siteurl\';

update wp_options set option_value = \'http://mynewdomain.com\' where option_name = \'home\';
使用PHPMyAdmin或任何其他您喜欢的访问数据库的方式。

SO网友:user129645

确保选择了新数据库,然后在表上运行一些sql更新和替换命令,尤其是wp\\u options、wp\\u posts、wp\\u postmeta。

使用下面的代码,交换新旧URL,不要使用斜杠。如有必要,也可在适用的情况下更改表格前缀值(即wp\\uu1)

UPDATE wp_options SET option_value = replace(option_value, \'http_www.oldurl\', \'http_www.newurl\') WHERE option_name = \'home\' OR option_name = \'siteurl\';    
UPDATE wp_posts SET guid = replace(guid, \'http_www.oldurl\',\'http_www.newurl\');    
UPDATE wp_posts SET post_content = replace(post_content, \'http_www.oldurl\', \'http_www.newurl\');    
UPDATE wp_postmeta SET meta_value = replace(meta_value,\'http_www.oldurl\',\'http_www.newurl\');

SO网友:MatthewLee

这是一个非常古老的问题,但由于我在寻找其他东西时遇到了它,我想我会添加此内容以供将来参考。

我认为最简单、最完整的方法是使用searchreplacedb2。php。可在此处找到:http://interconnectit.com/products/search-and-replace-for-wordpress-databases/ 以及对其用途的解释。

在wordpress网站上从开发环境迁移到实时环境,这无疑为我节省了大量时间。

只需确保完成后将其从公共服务器中删除即可!

SO网友:Renish Khunt

我知道您想将WordPress站点从开发环境移动到新服务器或生产服务器。

最近,我将我的站点移动到了生产服务器,我面临着同样的情况。我需要更新网站URL,因为WordPress将网站URL存储在数据库中。

我发现很好的MySQL查询使用,我可以很容易地改变URL直接从数据库喜欢。

SET @search := "http://olddomain.com";
SET @replace := "http://newdomain.com";

UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "siteurl";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "home";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "product_list_url";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "shopping_cart_url";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "checkout_url";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "widget_text";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "headerImageLogo";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "cunjo_plugin_url";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "wpsr_socialbt_data";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "issuem";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "_transient_dgxdonate_t70pbg1htu_1396322372";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "dgx_donate_log";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "headerBackgroundImage";
UPDATE `wp_options` SET `option_value` = REPLACE(option_value, @search, @replace) WHERE option_name = "transact_url";
UPDATE `wp_postmeta` SET `meta_value`=REPLACE(meta_value, @search, @replace);
UPDATE `wp_usermeta` SET `meta_value`=REPLACE(meta_value, @search, @replace);
UPDATE `wp_posts` SET `guid`=REPLACE(guid, @search, @replace);
UPDATE `wp_posts` SET `post_content`=REPLACE(post_content, @search, @replace);
您只需将站点URL从旧域名替换为新域名,然后使用PHPMYADMIN在MySQL上执行查询。

有关更多参考,请阅读this 辅导的

https://tryvary.com/wordpress-change-url-in-database-using-mysql-query/

结束

相关推荐

为什么WordPress从MySQL获得的帖子来自虚拟主机名,而不是直接主机名?

我正在Mac上开发一个WordPress网站,运行OS X 10.6.4。在开发过程中,我使用OS X的内置Apache服务器在本地运行该站点。我已经安装了WordPress,并将其连接到OS X的MySQL,没有问题。该网站似乎运行良好,我可以发布、编辑等。WordPress安装在一个名为~/Sites/mysite.dev.我还定制了.hosts 文件和Apachehttpd-vhosts.conf 文件,以重定向对mysite的请求。请转到这个文件夹。所以当我进去的时候http://mysite.d