From 45ce264675f80b585a6ad68ad68d9c253fcd35b1 Mon Sep 17 00:00:00 2001 From: Ethanfel Date: Thu, 19 Mar 2026 00:03:13 +0100 Subject: [PATCH] Fix DB init crash: wrap bulk migration in explicit transaction The COMMIT without BEGIN failed in autocommit mode, crashing ProjectDB init and leaving _shared_db as None ("Database not initialized"). Co-Authored-By: Claude Opus 4.6 --- db.py | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/db.py b/db.py index 3251cb8..7a9e2cc 100644 --- a/db.py +++ b/db.py @@ -74,19 +74,24 @@ class ProjectDB: """One-time bulk migration: merge separate lora strength keys in all stored sequences.""" rows = self.conn.execute("SELECT id, data FROM sequences").fetchall() updated = 0 - for row in rows: - data = json.loads(row["data"]) - original = row["data"] - migrated = self._migrate_lora_keys(data) - new_json = json.dumps(migrated) - if new_json != original: - self.conn.execute( - "UPDATE sequences SET data = ? WHERE id = ?", - (new_json, row["id"]), - ) - updated += 1 - if updated: + self.conn.execute("BEGIN") + try: + for row in rows: + data = json.loads(row["data"]) + original = row["data"] + migrated = self._migrate_lora_keys(data) + new_json = json.dumps(migrated) + if new_json != original: + self.conn.execute( + "UPDATE sequences SET data = ? WHERE id = ?", + (new_json, row["id"]), + ) + updated += 1 self.conn.execute("COMMIT") + except Exception: + self.conn.execute("ROLLBACK") + raise + if updated: logger.info("Migrated lora keys in %d/%d sequences", updated, len(rows)) def close(self):