内容目录
问题
在一次常规的博客迁移后发现了 2个问题
-
是添加文章报错
Warning: Attempt to read property "post_type" on null in /www/wwwroot/chenjie.info/wp-includes/post.php on line 7874 Warning: Attempt to read property "post_type" on null in /www/wwwroot/chenjie.info/wp-includes/post.php on line 7875 Warning: Attempt to read property "ID" on null in /www/wwwroot/chenjie.info/wp-includes/post.php on line 7879 Warning: Attempt to read property "post_type" on null in /www/wwwroot/chenjie.info/wp-includes/post.php on line 8137 Warning: Attempt to read property "post_type" on null in /www/wwwroot/chenjie.info/wp-includes/theme.php on line 3644 Warning: Attempt to read property "post_type" on null in /www/wwwroot/chenjie.info/wp-includes/theme.php on line 3870 Warning: Attempt to read property "post_type" on null in /www/wwwroot/chenjie.info/wp-includes/post.php on line 5798
- 首页,搜索页大量文章重复
排查
首先针对问题一
采取以下措施:
- 屏蔽插件
- 采用默认主题
- 保留数据库使用同版本 wordpress 源码重新安装
分别使用以上方法测试错误依旧,说明程序并没有问题
定位问题到数据库,新建文章设计 wp-posts 表
结合问题二发现索引 id 失去了自增主键,可能迁移过程发生 sql 异常导致
解决
需要重新建议主键自增索引,
但是需要删除重复 id 记录,因为我只是简单重复,随机删除即可,如果不是简单重复需要按需调整以下 sql 语句
-- 添加辅助自增列
ALTER TABLE wp_posts ADD COLUMN auto_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
-- 删除重复 ID 中重复的那一条
DELETE wp1 FROM wp_posts wp1
JOIN wp_posts wp2
ON wp1.ID = wp2.ID AND wp1.auto_id > wp2.auto_id;
-- 删除辅助列
ALTER TABLE wp_posts DROP COLUMN auto_id;
-- 修改 ID 为主键+自增
ALTER TABLE wp_posts
DROP PRIMARY KEY,
MODIFY ID BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
ADD PRIMARY KEY (ID);