别让数据库优化毁了你的WordPress媒体库
折腾WordPress也有这么久了,但一直都是停留在主题的修改上,数据库层面的东西很少去研究。看惯了小七等人针对WordPress左一个优化,右一个优化,我就只能挑点简单的来实验一下,其他的就只有羡慕的份了。
某天,没事瞎折腾,照着小七发的那篇《总结下WordPress数据库优化》,也想把博客的数据库清理一下,虽然原本也没多大。
结果,一不小心,WordPress后台媒体库里的照片竟然全没了!主机上的图片文件还在,文章中的图片也显示正常,就是媒体库里之前上传的图片全不见了。尝试着再上传几张图片,发现后面上传的又能正常出现在媒体库里,有点摸不着头脑了……
去度娘谷歌了好久,虽然网友们也有很多类似媒体库不显示图片的问题,但都不是我这种情况。我甚至备份了主机上的所有数据后,准备把一切重置了试试。
重装了VPS,重装了WordPress,一连串的重装了VPS上有的BBR、SSR等,懂行的人一定觉得我脑抽了是不是。确实,每每回想起那天的情形,我都觉得自己跟脑抽了一样,放着娃不带,顶着老婆大人的抱怨,头疼却在医脚。
虽然问题没有解决,但终归不影响博客的使用,先放一边了。
直到前段时间,工作中需要频繁分析大量的数据,面对几十万行数据的Excel表,还要不停编辑复杂的公式,运算起来电脑卡爆了,实在是受不了了,于是决定用数据库试试。
起先试用的是ACCESS,毕竟OFFICE自带的,不用重新安装,方便。不过使用了一段时间后还是放弃了,对于大量数据虽然比Excel好些,但打开ACCESS就是个煎熬(公司电脑的配置真心不够用),果断放弃了。
第二次尝试的是MySQL社区版,下载到本地安装,接着装个HeidiSQL图形界面管理器,一下子感觉轻快了许多。顺手从某阅读APP里搞了本《SQL必知必会(第4版)》,还是要认真学习一下滴。这是本好书,至少是一本入门级别的好书。
学了点简单的用法,满足了工作的需要后,我把之前备份的两个不同时间的博客数据库导入到了本地数据库,研究了一下wordpress的数据结构。然后,我恍然明白,为什么会有“笑哭了”这个表情。
原来,我在做数据库清理时,Copy小七写的SQL语句时,运行了这么一句:
DELETE FROM wp_posts
WHERE NOT(post_status = 'publish' AND post_type IN('post','nav_menu_item','page'));
这句的意思是在wp_posts
表中删除文章状态(post_status)不是发布(publish)状态,并且文章类型(post_type)不是文章(post)、导航菜单(nav_menu_item)或者页面(page)的所有文章。
然而WordPress媒体库中图片信息在数据库中也是存放在wp_posts
表中的,其文章类型为attachment
!
就是上面那句SQL语句,一下子就把媒体库里图片信息清空了,这就是为什么其他地方都没有异常,而偏偏媒体库中的图片消失了,新上传的又能显现的原因了。
问题解决!
- 本文链接:http://notesth.com/do-not-let-database-optimizes-destroy-your-wordpress-media-library.html
- 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。
汗~你倒不如直接用数据库整理的扩展(如 WP-Optimize)……
以前也没想过要优化数据库什么的,所以也就没想到用插件,瞎折腾而已,估计不到万不得已的时候是不会再去动它了... :???:
😟 没用媒体库,都是 ftp 上传。
有折腾 才有成长
论做好备份的重要性
不好意思,把你坑了 :oops:
attachment我漏写了。。。我自己代码是有的。。。
不好意思,不好意思,文章已经编辑了。。
呵呵,需要小心!
欢迎加入松松博客交流群,群聊号码:571334199
从百度点进来的,学习学习,呵呵!
哥们,我的情况应该是和你一样的。能告诉我怎么修复的不?小白一枚,折腾半个月了。 😁
首先你得备份了数据库,找到一份“事故”前备份的数据,从wp_posts表中提取文章类型为attachment的记录,然后insert into当前数据的wp_posts表中。把当前数据库和备份的数据均下载到本地数据库中,操作完了后再覆盖上去,以防万一。具体的SQL语句大致如下:
insert into 当前数据库名.wp_posts select * from 备份的数据库名.wp_posts where post_type='attachment';
以前就吃过这种亏,最后媒体库缩略图消失而不知原因,今天才知道了答案。
我也是最后选择所有图片全部调用原图 😆
都是要先备份数据库再优化 修改