Closed
Description
Hi,
Recently got this error:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/ethan/git/music-metadata-indexer/src/mmindexer/__init__.py", line 38, in <module>
start("/home/ethan/git/music-metadata-indexer/sample", "/home/ethan/git/music-metadata-indexer/test.db")
File "/home/ethan/git/music-metadata-indexer/src/mmindexer/__init__.py", line 23, in start
scanner.build_database()
File "/home/ethan/git/music-metadata-indexer/src/mmindexer/scan.py", line 79, in build_database
_import_song(self.db, Path(dirpath).joinpath(f), self.logger)
File "/home/ethan/git/music-metadata-indexer/src/mmindexer/scan.py", line 23, in _import_song
db.add_song(filepath)
File "/home/ethan/git/music-metadata-indexer/src/mmindexer/index.py", line 166, in add_song
for match in self.search("albums", album):
File "/home/ethan/git/music-metadata-indexer/env/lib/python3.9/site-packages/sqlite_utils/db.py", line 1625, in search
cursor = self.db.execute(
File "/home/ethan/git/music-metadata-indexer/env/lib/python3.9/site-packages/sqlite_utils/db.py", line 243, in execute
return self.conn.execute(sql, parameters)
sqlite3.OperationalError: fts5: syntax error near "."
So, the error seems to suggest there was a "." character somewhere in the SQL command that was causing the error. I did a little digging and found this in the docs: https://www.sqlite.org/fts5.html#fts5_strings. "." is one of the many prohibited characters.
My solution was to just strip these out of the query using this line
query = query.translate({e: None for e in itertools.chain(range(0,26), range(27, 48), range(58,65), range(91,95), [96], range(123,128))})
Perhaps this could be included into the table.search()
function?