- 安装
sqlite3
sudo apt update
sudo apt install sqlite3
- 备份数据库
cp ./data/navidrome.db ./data/navidrome.db.bak.$(date +%F-%H%M%S)
- 查看所有 Library
sqlite3 ./data/navidrome.db "SELECT id, name, path FROM library;"
1|音乐|/music
2|儿童|/children
3|123|/music/123
- 不要删 path 是 /music 的默认库,只删新建的 Library,比如删 儿童
清理已经没有 Library 关联的旧索引
sqlite3 ./data/navidrome.db "DELETE FROM library WHERE name = '儿童';"
或
sqlite3 ./data/navidrome.db "DELETE FROM library WHERE id = 2;"
- 数据库清理
sqlite3 ./data/navidrome.db "
DELETE FROM media_file
WHERE library_id IS NULL
OR library_id NOT IN (SELECT id FROM library);
VACUUM;
"
查看容器内看到的音乐文件
docker exec navidrome find /music -type f \( \
-iname "*.mp3" -o \
-iname "*.flac" -o \
-iname "*.m4a" -o \
-iname "*.aac" -o \
-iname "*.ogg" -o \
-iname "*.opus" -o \
-iname "*.wav" -o \
-iname "*.wma" \
\) | wc -l
进 Navidrome 网页,执行完整扫描,执行下面命令,容器内文件数和库文件数是否一致,一致即可
sqlite3 ./data/navidrome.db "
SELECT l.id, l.name, l.path, COUNT(mf.id) AS songs
FROM library l
LEFT JOIN media_file mf ON mf.library_id = l.id
GROUP BY l.id, l.name, l.path;
"