这两天网站运行时多次发现不加载显示文章内容,而网页架构、评论等都是正常的,登录 phpMyAdmin 查看 MySQL 数据库,发现 wp_posts 表状态显示为:使用中…,也就是说 wp_posts 表崩溃了,或者说是锁死了。
站点有文章但不加载文章内容
wp_posts 表状态显示使用
这种情况下,执行“优化表”或“修复表”时,均报错“错误,无法创建新的临时文件:’./yseeker/wp_posts.TMD’”。但可以执行“分析表”和“检查表”,执行后表文件正常,网站可以正常访问,但过一段时间又发生 wp_posts 表崩溃的现象。而且一执行“优化表”或“修复表”,表就崩溃。显然 wp_posts 存在着错误。
参照网上的一些方法,我尝试了这种操作:
- 打开 Shell 软件,登录服务器;
- 运行命令:myisamchk -r -f wp_posts.MYI,报错:’wp_posts.MYI’文件不存在。
- FTP 登录到服务器,找到 wp_posts.MYI 文件所在地,/var/lib/mysql/yseeker/wp_posts.MYI,删除此文件(删除前请备份此文件)。
- 重新在 Shell 下运行命令:myisamchk -r -f wp_posts.MYI,仍然报错:’wp_posts.MYI’文件不存在。
- 把 wp_posts.MYI 恢复,并在 Shell 下运行命令:myisamchk -r -f /var/lib/mysql/yseeker/wp_posts.MYI,显示修复成功。
注:所以我认为如果在第 2 步直接执行第 5 步的操作步骤就可以了。
然后登录 phpMyAdmin ,尝试在 wp_posts 表中使用“优化表”或“修复表”功能(这样肯定比在 Shell 中执行方便直观的多),又发生了新的错误:Table ‘wp_posts’ is read only. 不能进行修复操作。
我在 FTP 中对 yseeker 文件夹中的所有文件设置777权限也不行,又搜索网络上的这个方法,使用 mysqladmin 命令进行修改。
- 首先,找到 mysqladmin 命令所在位置,一般都在 mysql/bin 下面,看安装时设定的文件夹,像我的在 /usr/bin/。
- 运行如下命令:/usr/bin/mysqladmin -u root -p flush-tables
- 按提示输入 root 账号的密码,没有任何提示,但重新打开 wp_posts 时,一切正常了。
我用的是阿里云的服务器,系统和应用是自己架设的,所以出了问题,阿里的工程师们并不负责解决,我们也理解。所以建议普通用户,还是使用阿里云的虚拟主机吧。这次他们推出的轻量级服务器,倒是完成了系统和应用的安装,选择 Linux 系统和 WordPress 应用,及 MySQL 数据库,可以方便地使用,一键绑定域名,部署 https 访问,不过 FTP 要自己架设。