diff --git a/apps/machine/electron/state-store.ts b/apps/machine/electron/state-store.ts index 1f7b41b..bddf1c4 100644 --- a/apps/machine/electron/state-store.ts +++ b/apps/machine/electron/state-store.ts @@ -158,8 +158,12 @@ export function initDatabase(dbPath?: string): void { if (existing && existing.value === '4') { // Migration v4 → v5: add manual_dispense type and remediated_by column - // SQLite cannot ALTER CHECK constraints, so recreate the table + // SQLite cannot ALTER CHECK constraints, so recreate the table. + // Disable FK constraints during migration to avoid errors from + // transaction_bills/cassette_bills referencing transactions(txid). + db.pragma('foreign_keys = OFF') db.exec(` + DROP TABLE IF EXISTS transactions_new; CREATE TABLE transactions_new ( txid TEXT PRIMARY KEY, type TEXT NOT NULL CHECK (type IN ('cash_in', 'cash_out', 'manual_dispense')), @@ -179,6 +183,7 @@ export function initDatabase(dbPath?: string): void { DROP TABLE transactions; ALTER TABLE transactions_new RENAME TO transactions; `) + db.pragma('foreign_keys = ON') db.exec(` CREATE TABLE IF NOT EXISTS operator_commands ( id INTEGER PRIMARY KEY AUTOINCREMENT,