Better fix for stale catalog_databases, closes #2606

Refs 2605
This commit is contained in:
Simon Willison 2025-12-02 19:00:13 -08:00
commit 170b3ff61c
2 changed files with 9 additions and 3 deletions

View file

@ -606,6 +606,15 @@ class Datasette:
"select database_name, schema_version from catalog_databases"
)
}
# Delete stale entries for databases that are no longer attached
stale_databases = set(current_schema_versions.keys()) - set(
self.databases.keys()
)
for stale_db_name in stale_databases:
await internal_db.execute_write(
"DELETE FROM catalog_databases WHERE database_name = ?",
[stale_db_name],
)
for database_name, db in self.databases.items():
schema_version = (await db.execute("PRAGMA schema_version")).first()[0]
# Compare schema versions to see if we should skip it

View file

@ -116,9 +116,6 @@ async def populate_schema_tables(internal_db, db):
database_name = db.name
def delete_everything(conn):
conn.execute(
"DELETE FROM catalog_databases WHERE database_name = ?", [database_name]
)
conn.execute(
"DELETE FROM catalog_tables WHERE database_name = ?", [database_name]
)