INSERT OR IGNORE 会让旧行不更新
更新于 2026-06-16
**「DB 里新数据的字段是对的,界面上旧数据还是旧值」——先查插入语句是不是 `INSERT OR IGNORE`。** 老记录已存在时整行被跳过,提取 / 解析逻辑改对以后,刷新也不会回填旧行,只有新入库的记录才有新值。现场
- 现象:订阅列表封面显示正文第一张图,而不是 RSS feed 的题图(enclosure)
- 后端提取逻辑已修对,DB 里新入库文章的
cover_image 确实是正确题图(已验证某 source 最新文章)
- 但列表里仍看到正文图 —— 因为
feed_entries 用的是 INSERT OR IGNORE,旧文章的那一行 cover_image 还是空值 / 旧值
排查要点
- 别停在「DB 里有正确值」——要问「这条正确值是新行还是旧行」
- 顺手排除掉不成立的怀疑:「前端走了另一条查询路径」在当前代码里不成立 —— 没有「全部」源,只有一条
listEntriesForSource(source_id) 数据路径
- 后端提取逻辑升级必须配一条回填(UPDATE / 一次性迁移),否则修复只对新数据生效
相关
- 修复范围分保守彻底与最小闭环 —— 同一封面提取问题的修复范围取舍
- 存量不会自动跟上新逻辑 —— 本条是该骨架的一处实例:只改提取逻辑,存量行不会跟上
- 以前能用最近坏了先查自己改了什么
- 图片加载失败要可重试并升级到HTTPS