修改库名,扫描媒体等写数据操作时失败,日志提示“Exception of type 'SQLitePCL.pretty.SQLiteException' was thrown.”
按官方的修复方法不成功:https://emby.media/support/articles/Corrupt-Database.html
执行完整性校验就过不了:
sqlite3 library.db PRAGMA integrity_check;
提示:
SQLite version 3.45.1 2024-01-30 16:01:20 Enter ".help" for usage hints. sqlite> PRAGMA integrity_check; Parse error: no such tokenizer: simple sqlite>
最后在EMBY论坛里找到了方法,按haiyjs提到的方法修复成功
https://emby.media/community/index.php?/topic/137846-emby-server/
1、删除StrmAssistant(神医助手) 插件
2、更新数据库
https://gist.github.com/sjtuross/5617b3dda5dddd97e1171fd6c0a758f9
windows系统可以在wsl中用同样的方法修复。
# ⚠️ 请先停止 Emby 服务,确保数据库文件不在使用中(非常重要) # ✅ 此脚本需安装 sqlite3 命令行工具: # Ubuntu 安装:sudo apt update && sudo apt install sqlite3 # 或从官网下载安装:https://www.sqlite.org/download.html # 第一步:进入 Emby 配置目录 cd /mnt/user/appdata/emby-linuxserver # 第二步:将原始 library.db 导出为 SQL 文件备份 sqlite3 data/library.db ".dump" > data/backup.sql # 第三步:从导出文件中移除全文搜索 (fts_search9) 相关的表结构和数据 grep -v -E 'fts_search9(_config|_content|_data|_docsize|_idx)?' data/backup.sql > data/clean.sql # 第四步:修正最后一行 ROLLBACK 为 COMMIT,避免事务未提交 sed -i '$s/^ROLLBACK; -- due to errors/COMMIT;/' data/clean.sql # 第五步:使用清理后的 SQL 文件生成新的数据库文件 sqlite3 data/library_new.db < data/clean.sql # 第六步:将新数据库的权限和拥有者与原始数据库对齐 perm=$(stat --format '%a' data/library.db) owner=$(stat --format '%U:%G' data/library.db) chmod "$perm" data/library_new.db chown "$owner" data/library_new.db # 第七步:备份原始数据库及其相关文件(如果存在) mv data/library.db data/library_bak.db [ -f data/library.db-shm ] && mv data/library.db-shm data/library_bak.db-shm [ -f data/library.db-wal ] && mv data/library.db-wal data/library_bak.db-wal # 第八步:用新的数据库替换原来的 library.db mv data/library_new.db data/library.db