Fails to index a few songs
-
When i try to index my music collection i get this error
Unable to execute SQL query: NOT NULL constraint failed: songs.ctime Unable to
fetch row<br />Failed query: INSERT INTO songs (title, album, artist,
albumartist, track, disc, year, originalyear, genre, compilation, composer,
performer, grouping, comment, lyrics, artist_id, album_id, song_id, beginning,
length, bitrate, samplerate, bitdepth, source, directory_id, url, filetype,
filesize, mtime, ctime, unavailable, fingerprint, playcount, skipcount,
lastplayed, lastseen, compilation_detected, compilation_on, compilation_off,
compilation_effective, art_automatic, art_manual, effective_albumartist,
effective_originalyear, cue_path, rating) VALUES (The Ecstacy Of Gold, S&M with
the San Francisco Symphony, Metallica, S&M with the San Francisco
Symphonyartist, 1, 1, 1999, -1, Rock, 0, , Metallica, , 0, , Metallica_id, S&M
with the San Francisco Symphony_id, , 0, 150674000000, 320, 44100, -1, 2, 1,
file:///home/pajaro/Music/onerandomsong.mp3, 8, 6029210, 1335652082, , 0, , 0,
0, -1, 1657206086, 0_detected, 0_on, 0_off, 0_effective, , , Metallica, 1999, ,
-1)And the then indexing stops
It happened with a few songs and i try removing them, but then another diffrent
song fails$ stats /home/pajaro/Music/onerandomsong.mp3
Give proper values for the file.
I dont know what can be happening here -
Song works perfectly fine in clementine
And even if the song is faulty, it only shows 1 song that is faulty and doesnt let me import the rest
Trying to Auto tag the song gives the same error
-
@pajaro
What OS, Qt version, strawberry version and filesystem? -
@jonas said in Fails to index a few songs:
@pajaro
What OS, Qt version, strawberry version and filesystem?https://tracker.debian.org/pkg/strawberry
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1014523 -
Seems to be a similar problem reported here. (with a solution!)
[https://bytemeta.vip/repo/strawberrymusicplayer/strawberry/issues/815]
-
According to the query, mtime is valid, but ctime is -1. But ctime should be set to mtime if ctime is not valid. Code here:
https://github.com/strawberrymusicplayer/strawberry/blob/2655b8b43a5c49deb36e3c7f3f854b18a2e0829c/ext/libstrawberry-tagreader/tagreadertaglib.cpp#L200I can't reproduce it, so it would be nice to know the filesystem in use, are you using encryption? I don't see that anywhere in the bug report.
What's the output from stat? Does it show "Birth"?My only guess is that birthtime returns -1 even though QFileInfo says "birthtime" is valid. But it would be nice to know exactly what's going on.
Similar issue here https://github.com/strawberrymusicplayer/strawberry/issues/815 and here https://github.com/strawberrymusicplayer/strawberry/issues/947
I find it it a bit strange that the birthtime is invalid for some files and not others.
-
Hi Jonas, I can't reproduce the problem either. But I notice files on NTFS have no birthtime, but that is not stopping strawberry from loading them.
-
Hi Jonas, trying out the patch on
https://github.com/strawberrymusicplayer/strawberry/issues/815but it now fails the test suite. Maybe the test needs updating as well?
[ RUN ] CollectionBackendTest.AddInvalidSong
13:01:53.887 INFO Database:152 Creating initial database schema
13:01:53.892 INFO Database:448 Updating "playlist_items" for %allsongstables
./tests/src/collectionbackend_test.cpp:125: Failure
Expected equality of these values:
1
spy.count()
Which is: 0
13:01:53.893 WARN unknown QSqlDatabasePrivate::removeDatabase: connection '4_thread_94473559422960' is still in use, all queries will cease to work.
[ FAILED ] CollectionBackendTest.AddInvalidSong (6 ms) -
@peterb
There was a unit test for checking that "invalid" songs actually errors instead of being added to the database, invalid meaning ctime or mtime missing.
Removed the test now https://github.com/strawberrymusicplayer/strawberry/commit/dbbedee77f244d7917d1481d20fd07279103ec17 -
Sorry, im out
I will do more specific test when i can
In the meantime, the file system is ext4
coreutils: /usr/bin/stat
returns a valid ctime (which is maybe corrected by the program)
I tried to auto tag the song (so maybe strawberry was able to "fix" whatever is wrong in the file, but it gives the same error
Clementine is able to index these
bad
filesEven if there is some error, like this, shouldnt strawberry try to recover by fixing the ctime? (and maybe reporting it to the user)
Even if strawberry doesnt "fix" the file, shouldnt it just import the rest of the files that doesnt have the problem? (or maybe all do, its hard to tell, because if i remove a bad file, it reports another one
-
@pajaro
The version available here
https://salsa.debian.org/debian/strawberry/-/jobs/2981368/artifacts/file/debian/output/strawberry_1.0.5-2+salsaci_amd64.debmight fix the problem.
-