INSERT OR IGNORE 会让旧行不更新

**「DB 里新数据的字段是对的,界面上旧数据还是旧值」——先查插入语句是不是 `INSERT OR IGNORE`。** 老记录已存在时整行被跳过,提取 / 解析逻辑改对以后,刷新也不会回填旧行,只有新入库的记录才有新值。

现场

  • 现象:订阅列表封面显示正文第一张图,而不是 RSS feed 的题图(enclosure)
  • 后端提取逻辑已修对,DB 里新入库文章的 cover_image 确实是正确题图(已验证某 source 最新文章)
  • 但列表里仍看到正文图 —— 因为 feed_entries 用的是 INSERT OR IGNORE,旧文章的那一行 cover_image 还是空值 / 旧值

排查要点

  1. 别停在「DB 里有正确值」——要问「这条正确值是新行还是旧行」
  2. 顺手排除掉不成立的怀疑:「前端走了另一条查询路径」在当前代码里不成立 —— 没有「全部」源,只有一条 listEntriesForSource(source_id) 数据路径
  3. 后端提取逻辑升级必须配一条回填(UPDATE / 一次性迁移),否则修复只对新数据生效

相关

  • 修复范围分保守彻底与最小闭环 —— 同一封面提取问题的修复范围取舍
  • 存量不会自动跟上新逻辑 —— 本条是该骨架的一处实例:只改提取逻辑,存量行不会跟上
  • 以前能用最近坏了先查自己改了什么
  • 图片加载失败要可重试并升级到HTTPS