fix(migrations): treat duplicate-column ALTER as no-op (#1886)

Integrated into release/v3.7.9
This commit is contained in:
smartenok-ops
2026-05-03 15:18:11 -04:00
committed by GitHub
parent dc8b85611f
commit 9dc377e1d8

View File

@@ -774,8 +774,23 @@ export function runMigrations(db: Database.Database, options?: { isNewDb?: boole
console.log(`[Migration] Applied: ${migration.version}_${migration.name}`);
} catch (err: unknown) {
const message = err instanceof Error ? err.message : String(err);
console.error(`[Migration] FAILED: ${migration.version}_${migration.name}${message}`);
throw err; // Re-throw to prevent DB from starting in inconsistent state
// "duplicate column name" means the column already exists — end state achieved, mark applied.
if (message.includes("duplicate column name")) {
const applyMarkerOnly = db.transaction(() => {
db.prepare("INSERT OR IGNORE INTO _omniroute_migrations (version, name) VALUES (?, ?)").run(
migration.version,
migration.name
);
});
applyMarkerOnly();
count++;
console.log(
`[Migration] Applied (column pre-exists): ${migration.version}_${migration.name}`
);
} else {
console.error(`[Migration] FAILED: ${migration.version}_${migration.name}${message}`);
throw err; // Re-throw to prevent DB from starting in inconsistent state
}
}
}