我正在将基于Wordpress的网站切换到新服务器并同时更改域名,这意味着我必须在MySQL数据库中查找并替换许多字段。
具体来说,每当它们出现在MySQL的某个字段中时,我必须将“olddomain.com”替换为“newdomain.com”,例如“http://olddomain.com/?p=34”。
如何在我的MySQL数据库中进行大规模的替换?我知道LIKE
SQL命令可以在其中找到带有“olddomain.com”的字段,但是如何替换字段的特定部分?
答案 0 :(得分:5)
您可以将此搜索和替换脚本用于此目的
http://interconnectit.com/124/search-and-replace-for-wordpress-databases/
正如作者所说,原始replace
在这些情况下并不好
当您迁移WordPress(或任何其他平台使用 您必须使用域之间的数据库中的序列化PHP字符串 一种安全的搜索和替换方法,可以保持完整性 序列化字符串长度。一个简单的转储文件 localhost,例如,newdomain.com是 有问题,因为字符串的长度会改变但索引 对于序列化字符串没有。因此设置丢失 和小部件消失。不好。
在Wordpress.org doc本身中提及。
答案 1 :(得分:4)
您可以使用MySQL的REPLACE()
功能:
UPDATE `table` SET `fieldname` = REPLACE(fieldname, 'olddomain', 'newdomain');
另一种选择是转储数据库,只需在您选择的编辑器中使用查找和替换。
答案 2 :(得分:1)
这应该对你有所帮助。它只会将olddomain.com
替换为newdomain.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)
答案 3 :(得分:-1)
由于切换服务器意味着必须转储数据库,因此您只需在创建脚本中用newdomain替换olddomain。