Original post here [redlib link].
Written by deluan
The next release normalizes every ID in the database into a single format. It runs a one-time migration on first start. The PR with this change will be merged this weekend: https://github.com/navidrome/navidrome/pull/5824
If you run develop or auto-update, this lands soon (this weekend) and without warning. Make a backup of navidrome.db now. The migration is one-way, so rolling back (if needed) means restoring that backup.
The short version:
- Takes ~30s to ~1m20s on my 96k-track library (QNAP Celeron). Scales with library size.
- Everyone gets logged out once. Web UI and clients using the Navidrome API need to log in again. Subsonic clients authenticate per request, so they are unaffected.
- Song IDs change, album and artist IDs do not. Clients that cache song IDs (offline downloads, cached playlists) may need a re-sync.
- Cover art gets re-fetched, so the first browse after upgrading is slower.
- Share links keep working.
- Nothing is lost: favorites, ratings, play counts, bookmarks, play queues, scrobble history and Last.fm / ListenBrainz links all survive. No rescan needed.
- One manual fix:
.nspsmart playlists usinginPlaylistornotInPlaylistkeep the old playlist ID on disk and need updating by hand.
Full write-up: https://gist.github.com/deluan/917ebc243c8b486101de857ffae6739b
If you can, please test it with your favourite client once it is merged, and reply here (or on our Discord) if anything looks off.
EDIT: For app/client developers: I’ll merge the topSongsByArtistId PR at the same time as this ID migration. This means that you’ll be able to detect if a server is migrated by checking the getOpenSubsonicExtensions response and looking for the topSongsByArtistId extension.


Thanks for the heads up