有一点很奇怪,如果说是在 2020.3 以后存储下载记录的逻辑有过变更(没能在网上查阅相关的资料,基本都提示下载记录是存在 History 文件里由 downloads 和 downloads_url_chains 表管理),那现在的版本应该是按照新逻辑存储的,可我这边测试下载以及稍微浏览下项目的源码后发现新的下载记录是确实保存到 History 里的两个表中。所以若存储逻辑真的有过变更的话,那也应该是旧的下记录存储在其它地方,即 History 缺失的应该是旧记录。
Download Metadata 文件大小只有 4 KB,使用 DB 浏览器打开
文件名字面意义来看,应该是记录某些下载元数据?软件提示为
---------------------------
DB Browser for SQLite
---------------------------
无法打开数据库文件。
原因: file is not a database
---------------------------
OK
---------------------------
经过几次排查测试,明确发现只有你给的 History 文件不能写入新的下载记录,查看你给的 History 文件表结构后发现竟然和百分(Edge/Chrome)等不一样。有可能是因为这份 History 文件来自上述三种浏览器之外的其他 Chromium 内核浏览器或者是被其更改过导致。
新下载记录不会写入的原因是 downloads 表里多出了两列:scan_result 和 speedup_urls,关键是这两列被设定成 NOT NULL(不接受空值) 且没有默认值,这样百分(Edge/Chrome)等的新下载记录由于不会带有这两个列,而导致其永远都无法写入数据库文件中了。
解决方法就是自行更改表结构移除这两个列,然后将新 History 替换回去,这时启动浏览器后原本保存于 LevelDB 文件中的新下载记录就能写入并且合并了,我这边做了一个已经合并后的 History 文件:https://sailboatweb.lanzoup.com/iYoiNygn4tg,解压密码就是楼下那个压缩包的解压密码。
不过我建议你自己直接用当前的 User Data 来重头处理,大致可以按以下步骤:
1. 彻底退出浏览器,另外备份一份 User Data。
2. 用 SQLite 浏览器打开 Defalut/History,删除 downloads 表中上述所提到的 scan_result 和 speedup_urls 列(在DB Browser for SQLite 的话在"数据库结构"中右键表名有"修改表"里可以删除列),保存数据库(Ctrl+S)。
3. 启动浏览器,等个十几秒钟,确保 LevelDB 中的下载记录已合并,审查一下 History 文件看看数据是否已正常。若无误则可以用这个 History 文件来迁移下载记录至 Edge 中。