3

我正在将我的 Wordpress 驱动的网站切换到新服务器并同时更改域名,这意味着我必须在我的 MySQL 数据库中查找和替换许多字段。

具体来说,每当“olddomain.com”出现在 MySQL 中的某个字段(例如“http://olddomain.com/?p=34”)中时,我必须将它们替换为“newdomain.com”。

如何在我的 MySQL 数据库中进行大量查找替换?我知道LIKESQL 命令可以在其中找到带有“olddomain.com”的字段,但是如何替换字段的特定部分?

4

4 回答 4

5

您可以为此目的使用此搜索和替换脚本

http://interconnectit.com/124/search-and-replace-for-wordpress-databases/

正如作者所说replace,在这些情况下,raw 不好

当您在域之间迁移 WordPress(或在数据库中使用序列化 PHP 字符串的任何其他平台)时,您必须使用安全的搜索和替换方法来保持序列化字符串长度的完整性。一个简单的 localhost 转储文件,例如,thenewdomain.com 是有问题的,因为字符串的长度会发生变化,但序列化字符串的索引不会。因此设置丢失并且小部件消失。不好。

Wordpress.org文档本身中引用。

于 2012-05-30T20:59:05.013 回答
4

您可以使用 MySQL 的REPLACE()功能:

UPDATE `table` SET `fieldname` = REPLACE(fieldname, 'olddomain', 'newdomain');

另一种选择是转储数据库并在您选择的编辑器中使用查找和替换。

于 2012-05-30T20:55:19.753 回答
1

这应该可以帮助你。它只会替换olddomain.comnewdomain.com. 左边和右边的字符串olddomain.com将保持不变。

UPDATE tablename 
SET columnname = REPLACE(columnname, 'olddomain.com', 'newdomain.com')
WHERE columnname LIKE '%olddomain.com%';

这就是函数的工作原理 -REPLACE(text_string, from_string, to_string)

于 2012-05-30T20:57:16.507 回答
-1

由于切换服务器意味着必须转储数据库,因此您可以在创建脚本中将 olddomain 替换为 newdomain。

于 2012-05-30T20:58:05.260 回答