找原因
接下来进入到熟系的环节,那就是找出原因。首先当然是请出F12大法,先看看API有没有报错。果然不出所料,接口报错了。看样子SQLite数据库出问题了,但又不知道什么问题。
SQLitePCL.pretty.SQLiteException: Corrupt: database disk image is malformed
第二板斧,谷歌一下呗。很快就找到了一个类似的问题,不过时间比较久远,但是笔者当时没太注意,就照着这个答主的说法直接将data/library.db改了名字,然后重启Emby。结果可想而知,无效且问题更严重了:媒体库都不见了!
看来是找错方向了,重新搜索,并选择比较新的答案。然后就在Emby的官网上找到了一个问答,看起来还是比较靠谱的:
这位网友Happy2Play回复说:请上传一下embyserver.log日志以确定错误信息。于是提问的网友charlesk就老老实实上传了。此时笔者已经隐约感觉自己的Emby可能要出大事了。
Happy2Play提到先看embyserver.log,笔者也赶紧从Emby控制台中打开日志,果然也是同样的问题!意思是“数据库镜像文件损坏了”。
为什么会损坏呢?一般来说就是异常关机或不正常关闭Emby导致的,无独有偶,笔者的NAS前几天确实异常关机过一次!
尝试解决
解决方法正如上面的网友说所,需要重置数据库,那么如何重置呢?上文中的Happy2Play在回复中也给了Emby官方的解决方法链接,直接打开,照着操作。
https://emby.media/support/articles/Corrupt-Database.html
1、首先关闭Emby。
笔者直接到NAS中关闭Emby容器即可。
2、到data目录
从文件管理器或终端中导航到Emby的数据目录,一般是 <Emby Dir>/config/data:
3、删除library.db文件
在data目录中找到library.db-shm和library.db-wal这两个文件,删除!
4、重启Emby
直接启动Emby容器,并等待系统启动完成。但结果正如笔者所料,依-然-无-效!
再次尝试
归根到底,还是因为library.db数据库文件已经损坏了,上面的缓解措施无法解决问题。要想解决问题,看来还是得修复数据库文件才行。照着官网的指引继续操作。
1、安装SQLite
到SQLite官网下载即可。官网地址:https://sqlite.org/,然后安装在本地电脑上。
2、下载library.db文件
将NAS上的library.db文件下载到电脑上。
3、执行数据库修复
从电脑终端中切换到library.db所在的目录,然后执行下面命令:
sqlite3 library.db ".recover" | sqlite3 library-recovered.db
等待片刻,然后会得到一个新的数据库文件library-recovered.db。
4、替换数据库文件
先将NAS上的Emby停止,并将library.db改为library.old。然后将电脑上的library-recovered.db上传到NAS上Emby的data目录中,并改名为library.db。
5、重启Emby
重启后一定不要着急,虽然这时候打开Emby可能还是一片空白,但是embyserver.log日志中已经没有"SQLitePCL.pretty.SQLiteException: Corrupt: database disk image is malformed"这样的报错了。
直接打开Emby的控制台,点击扫描媒体库,对媒体库进行重建,多等一会,切记一定不要着急!切记一定不要着急!切记一定不要着急!
见证奇迹
大概等了不到10分钟,笔者重新打开并强制刷新了Emby,首页和媒体库都已经顺利恢复了,总算有惊无险,不然重新创建和设置媒体库又是个大工程。
现在回到最开始地方,我们来试试搜索功能有没有恢复。看下图,搜索也恢复了。只不过封面图似乎丢了,不用担心,让Emby慢慢刮即可。
至此,一场因错误删库而引发的“人道主义灾难”有惊无险得到化解,开心看剧去喽~~
原创不易,如果觉得此文对你有帮助,不妨点赞+收藏+关注,你的鼓励是我持续创作的动力!