From 16665c9ee63df40bc262661ce6ed728a946375db Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Sun, 22 Dec 2019 15:31:40 +0000 Subject: [PATCH] Better handling of corrupted database files --- datasette/database.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/datasette/database.py b/datasette/database.py index 9a8ae4d4..875dac20 100644 --- a/datasette/database.py +++ b/datasette/database.py @@ -97,7 +97,7 @@ class Database: else: rows = cursor.fetchall() truncated = False - except sqlite3.OperationalError as e: + except (sqlite3.OperationalError, sqlite3.DatabaseError) as e: if e.args == ("interrupted",): raise QueryInterrupted(e, sql, params) if log_sql_errors: @@ -145,7 +145,7 @@ class Database: counts[table] = table_count # In some cases I saw "SQL Logic Error" here in addition to # QueryInterrupted - so we catch that too: - except (QueryInterrupted, sqlite3.OperationalError): + except (QueryInterrupted, sqlite3.OperationalError, sqlite3.DatabaseError): counts[table] = None if not self.is_mutable: self.cached_table_counts = counts