From 6eec58b8e7fecfe02dfbd387a7772dadca5fe698 Mon Sep 17 00:00:00 2001 From: triggermeelmo Date: Wed, 19 Nov 2025 14:25:22 +0100 Subject: [PATCH] Off-By-One Error in Datebank Migration behoben --- Watcher/Controllers/MonitoringController.cs | 3 ++- .../20251117142850_StartServerIdsAtZero.cs | 12 ++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Watcher/Controllers/MonitoringController.cs b/Watcher/Controllers/MonitoringController.cs index 7e7c649..0e60c8b 100644 --- a/Watcher/Controllers/MonitoringController.cs +++ b/Watcher/Controllers/MonitoringController.cs @@ -262,7 +262,8 @@ public class MonitoringController : Controller server = await _context.Servers.FirstOrDefaultAsync(s => s.IPAddress == dto.IpAddress); } // Falls keine IP-Adresse übergeben wurde oder Server nicht gefunden, versuche es mit der ID - else if (dto.Server_id > 0) + // WICHTIG: >= 0 da Server-IDs bei 0 starten können + else if (dto.Server_id >= 0) { server = await _context.Servers.FirstOrDefaultAsync(s => s.Id == dto.Server_id); } diff --git a/Watcher/Migrations/20251117142850_StartServerIdsAtZero.cs b/Watcher/Migrations/20251117142850_StartServerIdsAtZero.cs index fd8f8b4..8f93cf8 100644 --- a/Watcher/Migrations/20251117142850_StartServerIdsAtZero.cs +++ b/Watcher/Migrations/20251117142850_StartServerIdsAtZero.cs @@ -17,10 +17,18 @@ namespace Watcher.Migrations // Bestehende Server-IDs um 1 verringern (1 -> 0, 2 -> 1, etc.) migrationBuilder.Sql(@" - UPDATE Servers SET Id = Id - 1; + -- Bestehende Server-IDs anpassen, falls Server existieren + UPDATE Servers SET Id = Id - 1 WHERE EXISTS (SELECT 1 FROM Servers); UPDATE Metrics SET ServerId = ServerId - 1 WHERE ServerId IS NOT NULL; UPDATE Containers SET ServerId = ServerId - 1 WHERE ServerId IS NOT NULL; - UPDATE sqlite_sequence SET seq = seq - 1 WHERE name = 'Servers'; + + -- sqlite_sequence anpassen oder initialisieren + -- Falls Eintrag existiert: seq - 1, ansonsten: INSERT mit seq = -1 + -- Der nächste AUTOINCREMENT wird dann 0 sein + INSERT OR REPLACE INTO sqlite_sequence (name, seq) + VALUES ('Servers', + COALESCE((SELECT seq - 1 FROM sqlite_sequence WHERE name = 'Servers'), -1) + ); "); }