WordPress修改MySQL数据库的旧域名【复制站点必备】

text
tencent promotion
原创作者: Fengjiajun

WordPress修改MySQL数据库的旧域名【复制站点必备】

当我们将一个WordPress网站复制后,复制后的数据库依然残留了旧站的域名,此时我们需要将这些旧域名替换为新域名,这里介绍两种方法:

方法1:进入服务器控制面板比如宝塔面板的PHPmyadmin工具,找到数据库的SQL栏目,执行如下命令:

UPDATE wp_options SET option_value = replace(option_value, '旧域名', '新域名') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = replace(guid, '旧域名','新域名');
UPDATE wp_posts SET post_content = replace(post_content, '旧域名', '新域名');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'旧域名','新域名');

方法2:如果没有安装PHPmyadmin工具,也可以通过SSH客户端连接到服务器,按照下面的命令执行SQL语句:

//登录MySQL,执行后输入数据库的密码
mysql -u root -p

//显示所有的数据库
show databases;

//选择要执行的数据库
use database_name;

//执行SQL语句
UPDATE wp_options SET option_value = replace(option_value, '旧域名', '新域名') WHERE option_name = 'home' OR option_name = 'siteurl'; 
UPDATE wp_posts SET guid = replace(guid, '旧域名','新域名'); 
UPDATE wp_posts SET post_content = replace(post_content, '旧域名', '新域名'); 
UPDATE wp_postmeta SET meta_value = replace(meta_value,'旧域名','新域名');

//退出数据库
exit;

备注:
请将上面SQL语句里面的数据库表前缀修改为现有数据库的前缀;
请将上面SQL语句里面的【旧域名】和【新域名】替换为自己的域名;

 

案例记载:

有一次使用上面的命令导入数据库时,数据库报错:

Error
SQL query: Copy

UPDATE bbi_posts SET guid = replace(guid, 'http://a.com','https://b.com')
MySQL said: Documentation

#1406 - Data too long for column 'guid' at row 6550

报错原因:在 guid 字段中插入的数据超出了该字段的最大长度限制,解决办法如下:

UPDATE bbi_posts
SET guid = REPLACE(guid, 'http://a.com','https://b.com')
WHERE LENGTH(guid) + LENGTH('https://b.com') - LENGTH('http://a.com') <= 255;