Calibre-web的数据库
date
Dec 26, 2021
继19号把书库的管理员密码弄残(具体记录在这里)了之后,本周我又把记录书籍信息的数据库弄残了……
怎么出的问题
我要拆书
在收集整理电子书的过程中,总有一些书找不到,而其中的一部分也不是没有,只是包括在了合集中(亚马逊最喜欢出这样的合集)。
如果把这些合集直接放在书库中,总觉得不够完美,在找不到其他单独的版本,又不愿意放弃的情况下,只能考虑把合集的书拆分出来。
拆出来的问题
网上能拆书的工具并不多,google了一个星期,所能找到的工具都是说怎么用Calibre桌面版把epub格式的书籍拆开来。
之前也装过这个软件,没多久就删了。
其一是用Calibre看书实在是不够美观方便,它的主要应用还是在于书籍的管理编辑;
其二是,当时没装Calibre的web版,直接在本地电脑上管理书籍过于痴呆……
安装时图省事,直接选择了局域网上Calibre-web管理的书库所在的文件夹作为书库的位置……安装后看着挺美好的,之前上传备份的书都在了。可事实上,只是看上去美好而已!
刚装好的几天,两者相安无事。因为我根本还没去用。昨天还没拆书,只是试着编辑一本书籍的时候,就出现问题了。
- 将一本书都在了Calibre-web的自动添加书籍的文件夹中,然后关闭;
- 马上在桌面Calibre去编辑另外一本书,试试桌面Calibre能否获取豆瓣书籍的元数据;
- 发现不行,但可能已经点击过保存了;
- 再进入Calibre-web,编辑刚才自动转存的新书,发现不能保存了……
具体现象
导致出现问题的原因在于,PC的Calibre和Calibre-web的autoaddbooks功能,同时向metadata.db数据库中写入书籍信息,导致了数据库文件出现了问题。具体表现在:
- 书籍列表为空;
- 已有的书籍还能看,也能发送到Kindle;
- 新上传的书籍,不能更改书籍信息(即修改了不能保存),只能看到伴随着epub格式上传时,自动提取的书籍信息;
尝试过的方法
用之前使用过的,解决了admin密码问题的数据库管理软件,打开metadata.db去看,似乎都很正常,但是完整性检查的时候,就出现说Page 1665出错……可我愣是找了半天也不知道哪里看这个page。网上搜了半天,也不得其法。难不成我还得从头开始学习SQL数据库?
尝试用桌面版的Calibre修复数据库,第一次成功了,但是只有几百本书(后来才知道,能重建的书籍,都是通过autoadd功能存入的,手动上传的书,在新数据库中彻底消失了。)更不用说重建的数据库中,所带出的书籍资料,都是epub自有的,简直是一塌糊涂!
试着在PC的Calibre上重新换了一个目录,想着万一还要折腾的时候,不会影响已经残废的数据库。但是等我要回到就有数据库时,马上就说数据库有问题,修复了好多次,都是修复失败……出错提示如下:
Traceback (most recent call last):File "calibre\db\restore.py", line 281, in replace_dbPermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。: '\\DS1813\book\library\metadata.db' -> '\\DS1813\book\library\metadata_pre_restore.db'
按照Docker作者的建议,常识在命令行中用calibredb restore_database命令重建,同样失败:
另一个诸如calibre-server实例的 calibre 程序或主 calibre 程序正在运行。有多个程序可以在同一时间对运行的 calibre 库进行更改是一个坏主意。calibredb可以直接连接到运行的 calibre 内容服务器,通过它进行更改。有关详细信息请参阅--with-library选项的文档。
我也不知道究竟是什么鬼玩意在阻止我更改这个库……怎么我弄坏时的那个步骤,不知道阻止我的呢?现在跟我说不行……
我知道是最后一本书的问题,用之前的工具“DBBrowserforSQLitePortable”在数据库中删除那本书的时候,提示了一条出错信息,组织我删除该书。正是这条出错提示救了我。
解决
事实上我现在依然对数据库一窍不通,白纸一张,所以解决的办法真的很是侥幸……
后来我放弃了在全网搜索怎么解决Calibre-web数据款出错问题,转而用上文提到的出错信息,直接找找有没有什么办法解决一般数据库的问题。终于被我找到这两个解决的案例:
命令行的我不会,第二个说是能用到图形工具,自然考虑先试试。一试之下,居然可以了……
最后
- PC版的Calibre的数据款依然放在NAS上,但是单独建了一个目录,再也不敢用Calibre-web的了。
- 鉴于metadata.db如此重要,我在NAS上用了两种方式做版本和文件备份,方便自己回溯还能正常运行的版本……
- 还是存在问题:不能自动添加书籍了,每次往那个目录中放了书,自动添加功能会重新建一个metadata.db文件,覆盖原文件……我现在只能手工添加书籍。
已经两次出现问题了,我只想好好收集点电子书而已,怎么就这么曲折的呢……