diff --git a/archivebox/search/backends/sqlite.py b/archivebox/search/backends/sqlite.py index ef93522f..b2c75bba 100644 --- a/archivebox/search/backends/sqlite.py +++ b/archivebox/search/backends/sqlite.py @@ -129,14 +129,16 @@ def index(snapshot_id: str, texts: List[str]): "INSERT OR REPLACE INTO" f" {table}(rowid, {column}) VALUES ({SQLITE_BIND}, {SQLITE_BIND})", [rowid, text]) - # All statements succeeded; break retry loop - break + # All statements succeeded; return + return except Exception as e: - if str(e).startswith(f"no such table:"): + if str(e).startswith("no such table:") and retries > 0: _create_tables() else: raise + raise RuntimeError("Failed to create tables for SQLite FTS5 search") + @enforce_types def search(text: str) -> List[str]: table = _escape_sqlite3_identifier(FTS_TABLE)