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;