做为一名id轻度强迫症患者,建博客之初就关闭了草稿与修订版本的功能,图片占用id这个真没辙,直接ftp上传再利用地址关联过于费时费力。虽然有点强迫症,但懒癌显然更为致命一些。这几天捣鼓了一下wp_insert_post函数,意外发现数据库里多了好几个空白的id号,百度了一下解决方案,发现有爱好者发布了一段重新排列文章id的php程序。
备份数据库
这类针对关键数据的操作,需要备份好自己的数据库。已经坚持写了一个多月的文章,正准备学习一下如何备份。就顺便用来尝试一下重新排列文章id了,博客的数据库用的mysql,mysql的备份整个数据库的指令如下,导入导出数据库都在linux命令行中执行命令:
mysqldump -u root -h localhost -p 数据库名 > backdb.sql;
保险起见,除了备份数据库,还进入mysql的文件夹,把对应的数据库拷贝了一份,数据不多,生成备份文件与文件夹都非常快,linux下数据库的文件夹路径 :
/var/lib/mysql
为了走一遍流程,备份完直接删除了自己站点的数据库,之前没有试过这个操作,用心写了一段时间文章,删库的时候感觉五味杂陈,这个命令需要在mysql命令行中运行:
drop database 数据库名称;
导入数据库前,需要注意的是需要先在mysql中准备好空白数据库,命名备用,同样在命令行中运行:
create database 数据库名称;
退出数据库,在linux命令行中执行导入命令,注意命令后面的分号不能省略,不然会提示找不到文件,博主就是漏了分号,一度以为芭比Q了:
mysql -u root -p 数据库名称 < backdb.sql;
文章id重新排序
文章id重新排序php文件 提取码: sahi
文件的使用方法,将文件拷贝至站点根目录,通过域名+文件名的方式访问,成功则自动运行并输出处理结果,比如本博的地址是"www.biib.top",所以访问地址如下:
https://www.biib.top/wordpress_id_sequence.php
运行前最后一篇文章的id是341,运行后最后一篇文章的id是309,没想到误操作导致的厄余id达到了站点文章的10%之多。需要注意的是改文件最好阅后即焚,不要让其残留在服务器上,不然被误访问的话又会重新调整一遍id顺序。对于以id作为文章名称的站点慎用,id的调整会导致搜索引擎的结果与站点实际内容错位。
重排之后的问题
- 特色图片文章关联错位
- 媒体库图片失去文章关联信息
因为图片也占用了id,而程序将所有id重新梳理了一遍,图片的id自然也被变更了,于是访问站点的时候,所有采用媒体库图片作为缩略图(特色图片)的文章,缩略图都出了问题。
访问站点的时候,文章内图片内容正常,但看了一下媒体库,因为id号的变更,大部分图片都失去了所属文章的信息。因为博客的图片基本都是直接从媒体库上传的,所以错误面积较大,最终选择了从数据库导回数据。记录一下过程,供想要更改id的同仁参考。