最近由于升级 WordPress 的主题 Zephyr,需要 mysql 至少为 5.6 并且 PHP 版本至少为 7,因此我决定升级服务器的软件。
由于接近一年没有维护过 lnmp 环境,而升级又可能会有各种问题,因此我最终决定在升级环境后重新导入 WordPress 数据。
Wordpress 数据的导入导出就不在这里赘述了,今天要说的是导入过程中发现的一个问题以及解决的途径。
我在完成数据库升级,重新导入后,发现无法编辑新的日志,错误提示为 “You are currently editing the page that shows your latest posts“(您正在编辑展示最新文章的页面)。
这类问题原本应该是由于编辑权限有问题,或者说写入权限有问题造成的。但是考虑到我的账户就是站点管理员账户,数据库连接有效,写入权限(例如主题配置)也有效,那么问题就可能发生在某一张与日志相关的数据库表上了。于是经过一些搜索我发现,post被保存在[wordpress_prefix]_posts中,而一个正常的表的 Structure 结构应当拥有一个 Primary Key 主键,同时这个主键 “ID” 应当拥有自动递增属性,这两个属性会导致以上问题的发生。
因此就有以下解决方法:
- 直接设置逐渐并且赋予递增属性:
在切换到 Structure 选项卡后,点击右侧 Action 中的 Primary 将它设定为主键;
点击 Change 修改具体属性,勾选 A_I 确定后即启用 AUTO_INCREMENT。 - 重新导入数据表:
在数据库的 Structure 中选择需要重新导入的表,点击 Drop 丢弃表;
重新导入表,并且在导入时取消勾选 “Do not use AUTO_INCREMENT for zero values” 已防止出现此问题
但是我遇到的情况是无法正常数据表属性,因此判断只能重新导入数据表。在完成后通常数据库访问就可恢复,此问题仅有很小概率遇到,但是依然记录一下。