一次数据库灾难终于化解 囧orz~

事情是这样啊,我看到我的wordpress日志ID猛然飙升到1K3了,我靠,虽然我比较勤快的更新,但是这个ID比我还勤快啊,囧,通过查阅资料得知是自动保存在作怪,于是下载了这个“禁用WordPress自动保存的插件”,启用后同禁用了WP_POST_REVISIONS(我也不想做wiki啊)

define('WP_POST_REVISIONS', false);


以上方法wp 2.9测试无效,安装了这个插件Revision Control

之后删除掉了所有revision类型的文章

[sql]delete from wp_posts where post_type = 'revision';[/sql]

[sql]DELETE FROM wp_postmeta WHERE post_id IN (SELECT id FROM wp_posts WHERE post_type = ‘revision’);
DELETE FROM wp_term_relationships WHERE object_id IN (SELECT id FROM wp_posts WHERE post_type=’revision’);
DELETE FROM wp_posts WHERE post_type=’revision’;[/sql]

至于ID不连续,我也不想管了,只要以后连续就可以了,于是乎正准备关闭phpmyadmin,突然发现,在wp_posts里面有个guid字段,里面还是我在老主机上的域名,于是准被参考黑孩儿的这篇日志replace掉,不幸的是,我SQL语句写错鸟~~~~~

[sql]UPDATE wp_posts SET guid = REPLACE(post_content, 'oldvalue', 'newvalue');[/sql]

结果,所有的GUID字段都变成了文章正文,哎,还好这一周没怎么写文章,所以,数据库备份里面和这个当前文章库里面只有2篇文章不一样,于是导入备份里面的wp_posts到当前数据库的wp_posts_temp, 然后复制列数据到wp_posts

[sql]update wp_posts,wp_posts_temp set wp_posts.guid= wp_posts_temp.guid WHERE wp_posts.ID = wp_posts_temp.ID[/sql]

当然,最新的两篇文章还是要手动改一下,然后么。GUID全部恢复原状了,之后就知执行正确的域名迁移语句

[sql]UPDATE wp_posts SET guid = REPLACE(guid, 'http://bbs.jpu.edu.cn/weadmin/', 'http://ihipop.gicp.net/');[/sql]


我发誓下次复制粘贴命令的时候要经过脑子才行,


经过仔细检查,发现还有老域名的表除了黑孩儿的这篇日志提到的

wp_posts.post_content,

wp_options.option_value,'siteurl''home'等还有,可以用如下SQL筛选

[sql]

SELECT *

FROM wp_options

WHERE option_value LIKE '%weadmin%'[/sql]

其他插件表,比如,wp_download_monitor_files.filename,还有,要注意的是,并不是所有wp_posts.post_content内容都要替换,假设有这样一种情况,你的一篇文章,就比如这篇把,提到了我的老域名,但是这里我不是需要把它替换掉的,那么就不需要再替换了,替换了反而会让人读不懂文章,不知所云~

。guid字段记录了文章最原始的URL信息。无论将网站数据导入到什么地方。这个信息是不会变的。而当你批量修改了这个键值中的域名后,就出现了文章的ID重复的问题。虽然不影响直接的页面访问,但是对于RSS订阅等操作可能会有影响。如果以前你使用的是Slug作为链接地址,即设置了固定链接形式,guid字段值的影响不会很大。

可以根据现有记录的ID重新生成guid内容,这样做是为了让guid中记录的链接能够与站内文章的真实链接相对应。而且,以上操作也适用于使用后台导出导入功能进行搬家的朋友们,需要注意的是这个操作可能会导致网站的RSS订阅的列表文章位置发生变化。sql语句如下:

UPDATE posts SET guid = CONCAT('域名/前缀',ID) where post_type='类型'

域名/前缀—有以下两种形式:

http://domain.tld/?p= 供Post使用。
http://domain.tld/?page_id= 供Page使用。


修改站点地址、主页地址

UPDATE wp_options SET option_value = replace(option_value, 'http://www.old-domain.com', 'http://www.new-domain.com') WHERE option_name = 'home' OR option_name = 'siteurl';

修改文章中内部链接以及附件地址

UPDATE wp_posts SET post_content = replace(post_content, 'http://www.old-domain.com', 'http://www.new-domain.com');

更新文章永久链接

UPDATE wp_posts SET guid = replace(guid, 'http://www.old-domain.com','http://www.new-domain.com');

Author Info :
  • From:一次数据库灾难终于化解 囧orz~
  • URL:https://blog.ihipop.com/2010/04/1041.html
  • Please Reserve This Link,Thanks!
  • 发表回复

    您的电子邮箱地址不会被公开。 必填项已用 * 标注