mirror of
https://github.com/Mezeporta/Erupe.git
synced 2026-03-21 23:22:34 +01:00
fix: prevent startup panics on databases missing base tables
The catch-up migration now creates the servers table if missing, like sign_sessions. Startup cleanup queries in main.go use Exec instead of MustExec so missing tables log warnings rather than panicking.
This commit is contained in:
12
main.go
12
main.go
@@ -240,11 +240,17 @@ func main() {
|
|||||||
if len(ownedServerIDs) > 0 {
|
if len(ownedServerIDs) > 0 {
|
||||||
idList := strings.Join(ownedServerIDs, ",")
|
idList := strings.Join(ownedServerIDs, ",")
|
||||||
if config.DebugOptions.ProxyPort == 0 {
|
if config.DebugOptions.ProxyPort == 0 {
|
||||||
_ = db.MustExec("DELETE FROM sign_sessions WHERE server_id IN (" + idList + ")")
|
if _, err := db.Exec("DELETE FROM sign_sessions WHERE server_id IN (" + idList + ")"); err != nil {
|
||||||
|
logger.Warn("Failed to clear stale sign sessions", zap.Error(err))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if _, err := db.Exec("DELETE FROM servers WHERE server_id IN (" + idList + ")"); err != nil {
|
||||||
|
logger.Warn("Failed to clear stale server entries", zap.Error(err))
|
||||||
}
|
}
|
||||||
_ = db.MustExec("DELETE FROM servers WHERE server_id IN (" + idList + ")")
|
|
||||||
}
|
}
|
||||||
_ = db.MustExec(`UPDATE guild_characters SET treasure_hunt=NULL`)
|
if _, err := db.Exec(`UPDATE guild_characters SET treasure_hunt=NULL`); err != nil {
|
||||||
|
logger.Warn("Failed to reset treasure hunts", zap.Error(err))
|
||||||
|
}
|
||||||
|
|
||||||
// Clean the DB if the option is on.
|
// Clean the DB if the option is on.
|
||||||
if config.DebugOptions.CleanDB {
|
if config.DebugOptions.CleanDB {
|
||||||
|
|||||||
@@ -14,6 +14,19 @@
|
|||||||
-- 20-reset-warehouses — destructive data reset (NULLs all item_box columns)
|
-- 20-reset-warehouses — destructive data reset (NULLs all item_box columns)
|
||||||
|
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
-- Ensure tables that predate the patch series exist. These were always
|
||||||
|
-- part of the base schema but may be missing from very old databases.
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
CREATE TABLE IF NOT EXISTS public.servers (
|
||||||
|
server_id integer NOT NULL,
|
||||||
|
current_players integer NOT NULL,
|
||||||
|
world_name text,
|
||||||
|
world_description text,
|
||||||
|
land integer
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
-- Patch 00: psn-id (sign_sessions primary key + psn columns)
|
-- Patch 00: psn-id (sign_sessions primary key + psn columns)
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user