fix: kein WAL mehr, damit die read-only Web-App die DB öffnen kann
Eine readonly-Verbindung (web-Container) kann eine WAL-Datenbank ohne aktiven Writer/-shm nicht öffnen -> "attempt to write a readonly database", die Seite blieb leer. Da collector (Writer) und web (Reader) getrennte Prozesse sind und der collector keine Dauerverbindung hält, existiert im Ruhezustand kein -shm. - collector/db.py + schema.sql: WAL entfernt (Rollback-Journal als Default); readonly-Reads sind damit jederzeit möglich. - web/lib/db.ts: busy_timeout=5s, falls gerade geschrieben wird. Bestehende DB einmalig umstellen: PRAGMA journal_mode=DELETE; Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+3
-1
@@ -32,7 +32,9 @@ export interface Totals {
|
||||
function withDb<T>(fallback: T, fn: (conn: Database.Database) => T): T {
|
||||
let conn: Database.Database | null = null;
|
||||
try {
|
||||
conn = new Database(DB_PATH, { readonly: true, fileMustExist: true });
|
||||
// timeout: wartet kurz, falls der collector gerade schreibt (statt
|
||||
// sofort mit SQLITE_BUSY zu scheitern).
|
||||
conn = new Database(DB_PATH, { readonly: true, fileMustExist: true, timeout: 5000 });
|
||||
const hasTable = conn
|
||||
.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='charges'")
|
||||
.get();
|
||||
|
||||
Reference in New Issue
Block a user